Миграции
В корне решения создайте папку migrations с файлами с расширением .migration. Наличие этих файлов, обеспечивает миграцию данных. Миграции запускаются только в момент старта приложения, при изменении приложения в режиме разработки миграции не перезапускаются.
Уже выполненные на базе миграции повторно выполняться не будут, даже если условия их выполнения соблюдены.
Мотивация
Миграциия данных необходима при изменении структуры справочников, например, добавлении нового поля и перенос в него значения из другого поля. При изменении структуры справочника, данные в базе данных могут стать некорректными или неполными. Миграции позволяют автоматически обновить существующие данные в соответствии с новой структурой справочника.
Синтаксис
Название
Название файлов .migration задают имя миграции, которое должно раскрывать суть миграции, например 0023Перенести информацию из "Номер заказа" в "Номер".
Имя можно начиннать с порядкового номера миграции, например 0023. Этим обеспечивается удобство сортировки миграций в браузере файлов. Миграции выполняются в порядке возрастания имен.
Комментарий
Опишите контекст и причину создания миграции чтобы вы могли понять, зачем она нужна спустя время.
Условие выполнения
Миграция будет выполнена при соблюдении всех условий в блоке При условии. Название элемента задаёт тип условия.
| Название условия | Выполняется если в момент запуска приложения | Необходимые параметры |
|---|---|---|
| Создано поле | Было создано указанное поле в указанном справочнике | Справочник Поле |
| Существует справочник | Указанный псправочник уже существует, он был создан только что или ранее | Значением этого атрибута является название справочника |
| Существует поле | Указанное поле уже существует, оно было создано только что или ранее | Справочник Поле |
| Доступен удалённый справочник | Указанное название справочника не существует в app.rms, но существует в базе данных | Значением этого атрибута является название справочника |
| Доступно удалённое поле | Указанное поле не существует в app.rms, но существует в базе данных (то есть оно было удалено сейчас или ранее) | Справочник Поле |
Указывайте несколько условий для запуска миграций, чтобы точно описать ситуацию миграции данных.
Действия
Действия определяются как коллекция последовательных элементов в блоке Действия. Название элемента задаёт тип действия.
| Название действия | Описание | Необходимые параметры |
|---|---|---|
| Скопировать значение поля | Перенести данные из одного поля справочника в другое | Справочник Откуда Куда |
| Переименовать справочник | Переименовать справочник в базе данных | Старое название Новое название |
| Удалить справочник | Удалить справочник в базе данных | Значением этого атрибута является название справочника |
| Удалить записи справочника | Удалить записи в справочнике в базе данных | Значением этого атрибута является название справочника |
| Удалить поле | Удалить поле из справочника в базе данных | Справочник Поле |
| Удалить поле | Удалить поле из справочника в базе данных | Справочник Поле |
Примеры
Переименование поля
Заказчик попросил переименовать поле справочника заказы "Номер заказа" в "Номер"
lang: ru
Комментарий: Николай Иванов (менеджер) попросил переименовать поле
При условии:
Существует поле:
Справочник: Заказы
Поле: Номер
Доступно удалённое поле:
Справочник: Заказы
Поле: Номер заказа
Действия:
Скопировать значение поля:
Справочник: Заказы
Откуда: Номер заказа
Куда: Номер
Удалить поле:
Справочник: Заказы
Поле: Номер заказа
Переименование справочника
Заказчик попросил переименовать справочник "Поставщики" в "Контрагенты"
lang: ru
Комментарий: Задача №45125 в треке задач
При условии:
Доступен удалённый справочник: Поставщики
Существует справочник: Контрагенты
Действия:
Удалить справочник: Поставщики
Переименовать справочник:
Старое название: Поставщики
Новое название: Контрагенты