Как настроить автоматическое обновление конфигурации в периферийных узлах РИБ?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Как устроен процесс обновления в РИБ

Когда центральный узел выгружает файл обмена с измененной конфигурацией, периферийная база принимает сообщение обмена и загружает метаданные во временное хранилище конфигурации. На этом этапе платформа фиксирует факт изменения структуры, но не может применить их к рабочей базе данных «на лету» в работающем пользовательском сеансе.

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

Общий алгоритм автоматизации обновления сводится к трем ключевым шагам:

  1. Обнаружение принятых изменений конфигурации при выполнении обмена.
  2. Завершение всех активных пользовательских сеансов и установка блокировки соединений.
  3. Запуск Конфигуратора в пакетном режиме с последующим перезапуском сеанса для завершения обработки данных.

Вариант 1. Использование встроенного механизма БСП

В типовых решениях, построенных на базе Библиотеки стандартных подсистем (БСП), механизм автоматического обновления периферийных узлов уже встроен в подсистему обмена данными. Рассмотрим по шагам, как отрабатывает этот сценарий:

  1. Фиксация изменений: При выполнении регламентного задания обмена БСП обнаруживает, что в узел загружена новая конфигурация.
  2. Блокировка базы: Подсистема устанавливает блокировку работы пользователей с генерацией специального кода разрешения (параметр /UC). Пользователи получают уведомление о завершении работы, а фоновые задания принудительно останавливаются.
  3. Генерация командного файла: Служебный программный модуль формирует временный скрипт (файл с расширением .bat или .vbs), содержащий команды пакетного запуска Конфигуратора.
  4. Пакетное обновление: Текущий сеанс «1С:Предприятия» завершается. Скрипт запускает платформу в режиме Конфигуратора с ключом /UpdateDBCfg для применения реструктуризации к таблицам базы данных.
  5. Повторный вход и постобработка: После успешного обновления конфигурации базы данных скрипт инициирует запуск «1С:Предприятия» со служебными ключами запуска, выполняет оставшуюся часть чтения файла обмена, запускает дополнительные обработчики обновления данных и снимает блокировку пользователей.

Вариант 2. Самостоятельная реализация через скрипты и пакетный режим

Если используется нетиповая конфигурация или старая редакция без БСП, логику автоматического обновления можно реализовать самостоятельно с помощью внешних сценариев (PowerShell, CMD, Bash или OneScript).

Проанализируем базовый пример кода в 1С, который проверяет наличие изменений и запускает внешний сценарий обновления:


Если КонфигурацияИзменена() Тогда
    // Завершаем текущие процессы и формируем команду запуска
    ПутьКБазе = СтрокаСоединенияИнформационнойБазы();
    ЗапуститьПриложение("cmd.exe /c start C:\Scripts\update_rib.bat", , Ложь);
    ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;

Рассмотрим ключевые параметры командной строки 1С, которые необходимы для написания скрипта обновления:

  1. DESIGNER — запуск платформы в режиме Конфигуратора.
  2. /UpdateDBCfg — применение изменений структуры к конфигурации базы данных (реструктуризация).
  3. /DisableStartupMessages — отключение всплывающих интерактивных диалоговых окон при старте.
  4. /UC <КодРазрешения> — передача кода разрешения, если на информационную базу предварительно установлена блокировка начала сеансов.
  5. /DumpResult <ПутьКФайлу> — вывод результата выполнения пакетной операции в файл (код возврата 0 свидетельствует об успешном завершении).
  6. /Out <ПутьКЛогу> — сохранение системных сообщений Конфигуратора в лог-файл для анализа ошибок.

Разберем пример простого командного файла для файловой базы данных:


@echo off
rem Ожидание закрытия предыдущего сеанса
timeout /t 10 /nobreak

rem Запуск обновления конфигурации базы данных
"C:\Program Files\1cv8\current\bin\1cv8.exe" DESIGNER /F "C:\Bases\RIB_Node" /N "Admin" /P "Password" /UpdateDBCfg /DisableStartupMessages /DumpResult "C:\Bases\result.txt" /Out "C:\Bases\update.log"

rem Проверка результата и запуск базы в режиме Предприятия
if %ERRORLEVEL% EQU 0 (
    start "" "C:\Program Files\1cv8\current\bin\1cv8.exe" ENTERPRISE /F "C:\Bases\RIB_Node" /N "Admin" /P "Password" /DisableStartupMessages
)

Вариант 3. Использование сторонних специализированных утилит

Для централизованного управления большим парком периферийных баз часто применяются специализированные программы (например, Обновлятор-1С) или сценарии оркестрации на базе OneScript. Такие инструменты берут на себя рутинные задачи:

  1. Автоматическое создание резервной копии периферийной базы перед началом реструктуризации.
  2. Корректное завершение клиентских и фоновых сеансов (включая работу через консоль администрирования серверов rac/ras для клиент-серверных баз).
  3. Контроль кодов возврата и отправка уведомлений администратору в случае зависания или сбоя обновления.
  4. Возможность одновременного или каскадного обновления нескольких филиалов по расписанию.

Подводные камни и важные ограничения

При проектировании автоматического обновления периферийных узлов обратим внимание на следующие критические моменты:

  1. Монопольный доступ: Реструктуризация базы данных не может быть выполнена при наличии активных соединений. Скрипт должен гарантированно сбрасывать зависшие сеансы и блокировать попытки повторного входа пользователей до завершения процедуры.
  2. Интерактивные запросы реструктуризации: Если в центральной базе было выполнено удаление метаданных, изменение типов реквизитов или смена уникальности индексов, пакетный режим Конфигуратора может завершиться с ошибкой без явного подтверждения изменений. Для предотвращения таких ситуаций в центральном узле следует аккуратно подходить к критическим изменениям структур данных.
  3. Смена версии платформы: Если обновление конфигурации сопровождается обязательным переходом на новую версию платформы 1С, скрипт обновления должен динамически определять путь к актуальному исполняемому файлу нужного релиза платформы.
← На главную