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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изменен тип поля хранимой структуры

При изменении типа поля хранимой структуры миграция данных выполняется аналогично тому, как выполнялась бы при аналогичном изменении типа реквизита

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

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

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

Внесены изменения в регистры сведений

При изменении периодичности регистра сведений с Секунда на День, Месяц, Квартал или Год меняется тип значения стандартного поля Период с ДатаВремя на Дата.

При изменении периодичности регистра сведений с День, Месяц, Квартал или Год на Секунда меняется тип значения стандартного поля Период с Дата на ДатаВремя.

При изменении периодичности между День, Месяц, Квартал или Год в сторону меньшей точности (от Дата к Год) значения стандартного поля Период обрезаются в соответствие с новым значением периодичности.

При изменении состава и / или типов ключевых полей (стандартного поля Период + измерений):

  • Перед выполнением миграции проверяется отсутствие дублей ключевых полей которые могут появиться в результате такого изменения. При наличии дублей выдается сообщение об ошибке с несколькими примерами дублей и миграция отменяется;
  • Выполняется миграция таблиц дескрипторов доступа и RLS-ключей для этого регистра.

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

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