Добавление обязательных полей для агента

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

Задача

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

Настройки

1. Заполнение списка обязательных полей на форме Обязательные поля для агента

Исполнение

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

  1. CheckDBData - хранит список полей непосредственно в коде программы, в связи с этим дополнение в список полей возможно только при обновлении версии агента.
  2. CheckDB_Fields - хранит данные в таблице DB_Tables_Fields в базе данных «Менеджера проектов», поэтому добавление поле не требует обновления агента, но требует доступа к Агенту PC.

Этапы работы CheckDB_Fields

1. Запрашивается список обязательных полей из таблицы DB_Tables_Fields.
Выполняется запрос к Агенту «Менеджера проектов» по команде GetDB_Tables_Fields
https://cl.agb.is/GetDB_Tables_Fields

2. Для каждой записи определяются поля

  • Наименование таблицы
  • Наименование поля
  • Тип поля
  • Описание назначения поля
  • SQL-запрос - SQL запрос, который будет выполнен после создания поля. С помощью этого запроса выполняется первичное заполнение поля. Запрос может содержать несколько команд;

3. Добавление поля. 3.1. Если заданы значения Наименование таблицы, Наименование поля, Тип поля, то проверяется наличие поля и, при необходимости добавляется. Скрипт отправляется по репликации.
3.2. Если, дополнительно, задано значение Описание назначения поля, то после добавления поля добавляется и описание поля. Скрипт отправляется по репликации.
3.3. Если, дополнительно, задан SQL-запрос, то после добавления поля выполняется SQL запрос. Скрипт не отправляется по репликации.

* Если таблица отсутствует, то поле не добавляется.
* Пункты 3.2 и 3.3 выполняются только в случае добавления поля.
* Нет возможности добавить таблицу
* Нет возможности выполнить скрипт без добавления поля

После каждой операции результат сразу сохраняется в базе данных.
В случае критической ошибки сообщение об ошибке записывается в лог агента и остальной список полей игнорируется.

Дополнительная информация