Миграция данных при изменении проекта

При обновлении приложения, «1С:Шина» может осуществить миграцию данных приложения. Миграция данных может потребоваться в двух случаях:
  • Если новый проект использует другие структуры данных — например, существующему справочнику был добавлен новый реквизит.
  • Если после создания приложения был обновлен сервер и в новой версии сервера изменилась структура системных таблиц «1С:Шины».

Далее будет рассмотрено какие изменения произойдут с данными во время миграции при тех или иных изменениях в проекте.

Изменен состав типов реквизита

Характер изменения состава типов Изменения в данных при миграции
В состав типов добавлен новый тип Значение реквизита не меняется
Исключен тип Дата
  • Если есть тип ДатаВремя — значения Дата преобразуются в тип ДатаВремя
Иначе:
  • Если есть тип Момент — значения Дата преобразуются в тип Момент

Исключен тип ДатаВремя

  • Если есть тип Момент — значения ДатаВремя преобразуются в тип Момент
Иначе:
  • Если есть тип Дата — значения ДатаВремя преобразуются в тип Дата
Исключен тип Момент
  • Если есть тип ДатаВремя — значения Момент преобразуются в тип ДатаВремя
Иначе:
  • Если есть тип Дата — значения Момент преобразуются в тип Дата

Удален тип из состава типов

(Также это относится и к ситуации когда тип реквизита полностью изменился, либо из состава типов были удалены все присутствующие в нем типы и добавлены новые. Например, был тип Строка, а стал — Число).

Если значение реквизита имеет удаленный тип, то данное значение будет удалено, а на его месте будет установлено значение по умолчанию. кроме изменений типов дат (см. выше)
Примечание: При преобразовании из / в тип Момент используется часовой пояс UTC.

Изменены строковые фасеты

Изменения в строковых фасетах Изменения в данных при миграции
Уменьшено ограничение на максимальную длину строки Значения реквизита превышающие новую максимальную длину строки будут обрезаны до максимальной длины строки
Увеличено ограничение на максимальную длину строки Значение реквизита не меняется

Изменены числовые фасеты

Изменения в числовых фасетах Изменения в данных при миграции
Уменьшено значение длины целой части числа Если значение реквизита больше, чем максимально число, которое можно записать в реквизит в соответствии с новыми ограничениями, то значение устанавливается равным этому максимальному числу
Увеличено значение длины целой части числа Значение реквизита не меняется
Уменьшено значение длины дробной части числа Значение реквизита будет округлено до новой точности.
Увеличено значение длины дробной части числа Значение реквизита не меняется

Изменен тип элементов реквизитов-массивов

При удалении типа из состава элементов реквизита-массива (например Массив<Строка|Число>Массив<Строка>) при миграции проверяется, что в данных (таблице реквизита) нет записей с указанным типом элементов. Если записи с удаленным типом элементов есть — выдается ошибка и миграция данных не выполняется.

Изменены перечисления

Следующие изменения перечислений приводят к изменению данных во всех реквизитах, которые имеют это перечисление в своем составе типов:

  • Удаление значения перечисления — при наличии в данных приложения этого значения (в любом поле любой таблицы), при попытке обновления будет возращена ошибка;
  • Изменение порядка элементов перечисления не ведет к изменению данных, но может привести к длительной миграции таблиц, которые содержат поля с таким перечислением.

Удален элемент проекта

Во время миграции данных для удаленного типа проверяется присутствие этого типа в таблицах как значения некоторого поля с типом Тип. Если значения найдены — выдается ошибка и миграция не выполняется.