====== Добавление обязательных полей для агента ====== При обновлении программы добавляются новые поля в таблицы базы данных.\\ Если эти поля используются а агенте, то после обновления агента возникают ошибки запуска агента на базах, где обновление еще не выполнено.\\ ===== Задача ===== При запуске агента проверять наличие всех необходимых таблиц и полей в таблицах данных и, если таблица или поле отсутствует, то автоматически добавлять.\\ ===== Настройки ===== 1. Заполнение списка обязательных полей на форме [[:pc_FormDB_Fields|Обязательные поля для агента]]\\ ===== Исполнение ===== При запуске Агента АХ выполняется две функции проверки наличия полей, которые различаются только источником данных: - CheckDBData - хранит список полей непосредственно в коде программы, в связи с этим дополнение в список полей возможно только при обновлении версии агента. - 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 выполняются только в случае добавления поля.\\ * Нет возможности добавить таблицу\\ * Нет возможности выполнить скрипт без добавления поля\\ После каждой операции результат сразу сохраняется в базе данных.\\ В случае критической ошибки сообщение об ошибке записывается в лог агента и остальной список полей игнорируется.\\ [[develop:/реализация_добавления_обязательных_полей_для_агента|Реализация добавления обязательных полей для агента]]\\ ===== Дополнительная информация ===== [[:pc_FormDB_Fields|Обязательные поля для агента]]\\ [[:pc_FormDB_Field|Обязательное поле для агента]]\\ [[:db_tables_fields|DB_Tables_Fields]] \\