Show/Hide Toolbars

Руководство администратора

Утилита миграции 1Формы

Ссылки Назад Вверх Вперед

Утилита миграции предназначена для частичного и выборочного переноса настроек между двумя приложениями "Первой Формы" — исходным и целевым. Для сопоставления объектов двух приложений используется их GIUD, а не ID. Это защищает от дублирования объектов.

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

warning_icon  Утилита предназначена не для обновления и установки новых версий, а для переноса настроек с приложения, в котором ведется разработка нового функционала, на тестовое или "боевое" рабочее приложение. Поэтому версии приложений "Первая Форма" обязательно должны совпадать.

warning_icon  Обратите внимание на порядок работы в режиме dev-test-prod (разработка-тестирование-эксплуатация).

Особенности утилиты

Механизм переноса поддерживает следующие возможности:

1. В процессе переноса не требуется остановка приложения. Перенос можно осуществить на работающем приложении.

2. После переноса новые настройки применяются сразу без необходимости перезагрузки пула приложения.

3. Утилита не переносит данные из задач и пользовательские файлы. Она переносит только настройки системы и некоторые объекты (например, выпадающие списки, заданные в виде перечислений).

4. Кастомные объекты БД, такие как хранимые процедуры и настройки табличного вида, необходимо переносить вручную. Однако кастомные шаблоны дизайна категории (Устаревшее), а также шаблоны файлов (печатные формы) переносятся автоматически вместе с категорией.

5. При переносе ДП переносятся только их настройки. Связанные сущности, такие как категории, разделы, сводные разделы, другие ДП автоматически не переносятся. Их надо выбирать вручную в дереве экспортируемых объектов.

6. При переносе категории переносятся следующие связанные с ней группы:

группы, которым выданы права на категорию;

ответственная группа (указанная в основных настройках категории);

группа, уведомляемая о превышении плана (указанная в основных настройках категории);

группа, указанная в поле "Ответственный за оценку плановых трудозатрат" (в настройках ресурсов);

группа, указанная в поле "Ответственный за согласование плановых трудозатрат" (в настройках ресурсов);

также вместе с категорией переносятся настройки доступа к ДП по группам и уведомления, настроенные на группы.

warning_icon  Перенос группы означает только создание в целевом приложении группы с тем же ID. Состав группы (ее участники) не переносятся!

7. Если в исходном приложении были удалены связанные с категорией объекты, то при импорте эти объекты будут удалены и в целевом приложении. Это касается таких объектов, как:

ДП;

подписи на переходе;

JS/CSS-вставки;

настраиваемые кнопки;

произвольные события;

блоки "Используется";

блоки ДП.

8. Некоторые ДП должны экспортироваться вместе со связанными объектами:

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

При экспорте ДП Lookup и "Выбор нескольких задач в категории" (multilookup) нужно вручную выбрать категорию, на которую он настроен. Если ДП настроен на сводный раздел, нужно вручную выбрать этот сводный раздел, а также категории, которые входят в этот сводный раздел.

warning_icon  Это нужно делать только при первом экспорте ДП или после того, как в категории, на которые он настроен, вносились какие-то изменения (например, менялся маршрут и, соответственно, список статусов в настройках ДП Lookup). В остальных случаях в целевом приложении уже будут присутствовать все объекты, связанные с ДП, и переносить их вручную не требуется.

9. Если нужно перенести категорию из раздела, который есть в исходном приложении и нет в целевом, нужно перед импортом вручную создать такой раздел в целевом приложении. Если переносится весь раздел (то есть раздел отмечается в дереве экспортируемых объектов), то он будет создан в целевом приложении.

10. После переноса категорий инициируется денормализация этих категорий в целевом приложении.

11. Группы могут не участвовать в переносе, но использоваться в автоматизациях – в параметрах смарт-действий или в смарт-выражениях. В этом случае после переноса ID групп из исходного приложения надо изменить на ID соответствующих групп целевого приложения.

12. Если в автоматизации используются Общие SMART, то их нужно выбрать вручную в ветке "Смарт-выражения".

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

14. Настройки мобильного приложения – ветки "Шаблоны задач", "Источники данных задач", "Контейнеры" и "Шаблоны" – выбираются для переноса отдельно, вручную. Но настройки использования шаблонов в категории (шаблонизация) переносятся вместе с категорией.

15. Перенос порталов, портальных блоков блоков и их фильтров работает корректно только при импорте с сохранением id. Вместе с порталами переносятся также js/css вставки и смарты, которые используются в блоках. Хранимые процедуры, вызываемые в блоках, необходимо переносить вручную.

16. При переносе публикаций вместе с ними переносятся связанные объекты доступа, смарт-пакеты и представления (sql view).

17. Локализованные объекты переносятся вместе с локализациями (названиями на других языках). См. Мультиязычность и локализация.

Выбор объектов для экспорта/импорта

В процессе экспорта вы отмечаете те объекты системы, которые хотите перенести в другое приложение "Первая Форма".

export_conf

Выбор объектов для экспорта.

warning_icon  Экспортируются только объекты, отмеченные флагом flag_checked. Объекты, отмеченные флагом flag_half_checked, не экспортируются.

Если при выборе объектов для экспорта вы отмечаете категорию, но не отмечаете раздел, в котором она расположена, то раздел не экспортируется. В этом случае если в базе, куда вы будете затем импортировать эти объекты, нет соответствующего раздела, то категория без раздела не будет импортирована, и при импорте возникнет ошибка. Чтобы избежать этого, перед импортом вручную создайте в целевом экземпляре соответствующий раздел.

Если вы отмечаете раздел, то экспортируются все категории, которые в нем расположены. Перед импортом вы можете убрать лишние объекты, отредактировав вручную файл конфигурации config.json, который содержится в архиве: объекты с признаком Ignore не включаются в импорт, с признаком Include — включаются.

Дальнейшие действия описаны в разделах Экспорт и Импорт.

Расположение

Начиная с версии 2.182 утилита миграции TCModuleMigrationUtility.exe поставляется вместе с приложением "Первая Форма" и находится на сервере "Первой Формы" по следующему адресу:

wwwroot\inetpub\<ИмяПапкиПриложения>\bin

Начиная с 2.226 версии "Первой Формы" утилита миграции находится в отдельном архиве по адресу:

wwwroot\inetpub\<ИмяПапкиПриложения>\MigrationUtility <НомерВерсии>

warning_icon  Запускать утилиту необходимо от имени администратора.

Конфигурация утилиты

Конфигурация утилиты, в том числе строка подключения к БД, находится в файле TCModuleMigrationUtility.config.

Для каждой БД, с которой будет работать утилита, должна быть добавлена отдельная строка подключения. Данные для connectionString можно посмотреть в файле web.config соответствующего приложения "Первая Форма".

Пример:

<connectionStrings>

<add name="OLD" connectionString="Data Source=<БД>;Initial Catalog=<каталог>;Persist Security Info=True;User ID=<ID_пользователя>;Password=<пароль>;Max Pool Size=2500;MultipleActiveResultSets=True;Packet Size=4096"
  providerName="System.Data.SqlClient" />

<add name="NEW" connectionString="Data Source=<БД>;Initial Catalog=<каталог>;Persist Security Info=True;User ID=<ID_пользователя>;Password=<пароль>;Max Pool Size=2500;MultipleActiveResultSets=True;Packet Size=4096"
  providerName="System.Data.SqlClient" />
</connectionStrings>