Show/Hide Toolbars

Руководство по техническому обслуживанию

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

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

Внимание! Данный функционал находится в стадии beta-версии. 

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

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

!warning Утилита предназначена не для обновления и установки новых версий, а для переноса настроек с экземпляра, в котором ведется разработка нового функционала, на тестовый или "боевой" рабочий экземпляр системы. Поэтому версии экземпляров "Первой Формы" обязательно должны совпадать.
!warning Обратите внимание на порядок работы в режиме dev-test-prod (разработка-тестирование-эксплуатация).

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

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

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

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

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

ДП,

подпись на переходе,

js-вставка,

настраиваемая кнопка,

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

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

блок ДП.

5.При переносе ДП "Таблица" следует учитывать, что ДП, участвующие в настройках колонок таблицы, автоматически не выбираются для переноса. Их следует выбрать вручную в списке ДП. Смарт-колонки переносятся.

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

7.При переносе ДП Lookup, которые настроен на сводный раздел, этот раздел нужно выбрать вручную (если такого раздела еще нет в экземпляре-приемнике).

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

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

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

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

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

migration_12

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

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

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

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

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

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

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

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

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

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

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

Пример строки подключения:

<connectionStrings>
<add name="TCConnectionString" 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>

 

После завершения импорта на целевом экземпляре "Первой Формы" автоматически инициируется перезаполнение кешей. Для этого в конфигурационном файле утилиты нужно настроить подключение к Redis.

Пусть строка подключения для Redis такая:

<add name="RedisConnectionString" connectionString="localhost:6379,abortConnect=false,keepAlive=60,allowAdmin=true">

Если целевое приложение "Первой Формы" и Redis находятся на одном сервере, то для в файл конфигурации утилиты в блок connectionStrings нужно добавить такую строку подключения:

<connectionStrings>
 <add name="RedisEventsConnectionStringName" connectionString="localhost:6379,abortConnect=false,keepAlive=60,allowAdmin=true">
</connectionStrings>

(т.е. скопировать строку подключения к Redis и заменить имя с RedisConnectionString на RedisEventsConnectionStringName)

Если утилита подключается к БД удаленно (подключается через vpn или находится в той же локальной сети, но на другой машине)

то для в файл конфигурации утилиты в блок connectionStrings нужно добавить такую строку подключения:

<connectionStrings>
 <add name="RedisEventsConnectionStringName" connectionString="<адрес приложения>:6379,abortConnect=false,keepAlive=60,allowAdmin=true">
</connectionStrings>

(т.е. скопировать строку подключения к Redis и заменить имя с RedisConnectionString на RedisEventsConnectionStringName, а также вместо localhost указать адрес приложения).

Порт (в примерах выше это 6379) нужно указывать тот, который отведен для Redis, а не для основного приложения.

Возможные проблемы

При попытке переноса большого числа новых ДП в категорию, содержащую много задач, утилита может прекращать работу из-за превышения допустимого времени ожидания (таймаута). Чтобы увеличить таймаут, нужно на компьютере, с которого запускается утилита (а не с того, где расположены БД), изменить файл конфигурации

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

в конец файла (перед закрывающим тегом </configuration>) надо добавить строки:

  <system.transactions>
    <machineSettings maxTimeout="00:30:00" />
  </system.transactions>

В данном примере устанавливается таймаут в 30 минут, при необходимости можно установить больше.