Перейти к основному содержимому

Миграции

В корне решения создайте папку migrations с файлами с расширением .migration. Наличие этих файлов, обеспечивает миграцию данных. Миграции запускаются только в момент старта приложения, при изменении приложения в режиме разработки миграции не перезапускаются.

Уже выполненные на базе миграции повторно выполняться не будут, даже если условия их выполнения соблюдены.

Мотивация

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

Синтаксис

Название

Название файлов .migration задают имя миграции, которое должно раскрывать суть миграции, например 0023Перенести информацию из "Номер заказа" в "Номер".

Имя можно начиннать с порядкового номера миграции, например 0023. Этим обеспечивается удобство сортировки миграций в браузере файлов. Миграции выполняются в порядке возрастания имен.

Комментарий

Опишите контекст и причину создания миграции чтобы вы могли понять, зачем она нужна спустя время.

Условие выполнения

Миграция будет выполнена при соблюдении всех условий в блоке При условии. Название элемента задаёт тип условия.

Название условияВыполняется если в момент запуска приложенияНеобходимые параметры
Создано полеБыло создано указанное поле в указанном справочникеСправочник Поле
Существует справочникУказанный псправочник уже существует, он был создан только что или ранееЗначением этого атрибута является название справочника
Существует полеУказанное поле уже существует, оно было создано только что или ранееСправочник Поле
Доступен удалённый справочникУказанное название справочника не существует в app.rms, но существует в базе данныхЗначением этого атрибута является название справочника
Доступно удалённое полеУказанное поле не существует в app.rms, но существует в базе данных (то есть оно было удалено сейчас или ранее)Справочник Поле

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

Действия

Действия определяются как коллекция последовательных элементов в блоке Действия. Название элемента задаёт тип действия.

Название действияОписаниеНеобходимые параметры
Скопировать значение поляПеренести данные из одного поля справочника в другоеСправочник Откуда Куда
Переименовать справочникПереименовать справочник в базе данныхСтарое название Новое название
Удалить справочникУдалить справочник в базе данныхЗначением этого атрибута является название справочника
Удалить записи справочникаУдалить записи в справочнике в базе данныхЗначением этого атрибута является название справочника
Удалить полеУдалить поле из справочника в базе данныхСправочник Поле
Удалить полеУдалить поле из справочника в базе данныхСправочник Поле

Примеры

Переименование поля

Заказчик попросил переименовать поле справочника заказы "Номер заказа" в "Номер"

0023 Перенести информацию из Номер заказа в Номер.migration
lang: ru

Комментарий: Николай Иванов (менеджер) попросил переименовать поле
При условии:
Существует поле:
Справочник: Заказы
Поле: Номер
Доступно удалённое поле:
Справочник: Заказы
Поле: Номер заказа
Действия:
Скопировать значение поля:
Справочник: Заказы
Откуда: Номер заказа
Куда: Номер
Удалить поле:
Справочник: Заказы
Поле: Номер заказа

Переименование справочника

Заказчик попросил переименовать справочник "Поставщики" в "Контрагенты"

0008 Переименовать Поставщики в Контрагенты.migration
lang: ru

Комментарий: Задача №45125 в треке задач

При условии:
Доступен удалённый справочник: Поставщики
Существует справочник: Контрагенты

Действия:
Удалить справочник: Поставщики
Переименовать справочник:
Старое название: Поставщики
Новое название: Контрагенты