При активном использовании распределенных информационных баз (РИБ) регулярный перенос изменений метаданных из центрального узла в периферийные часто требует участия администратора или оператора на каждой точке. Разберем, как устроен процесс получения обновлений узлами, какие штатные и универсальные способы существуют для полной автоматизации обновления периферийных баз, а также проанализируем возможные сложности.
Когда центральный узел выгружает файл обмена с измененной конфигурацией, периферийная база принимает сообщение обмена и загружает метаданные во временное хранилище конфигурации. На этом этапе платформа фиксирует факт изменения структуры, но не может применить их к рабочей базе данных «на лету» в работающем пользовательском сеансе.
В этот момент возникает состояние, при котором дальнейший обмен данными блокируется до тех пор, пока база не будет реструктуризирована через режим Конфигуратора. Проверить это состояние программно можно с помощью метода КонфигурацияИзменена() или методов планов обмена.
Общий алгоритм автоматизации обновления сводится к трем ключевым шагам:
В типовых решениях, построенных на базе Библиотеки стандартных подсистем (БСП), механизм автоматического обновления периферийных узлов уже встроен в подсистему обмена данными. Рассмотрим по шагам, как отрабатывает этот сценарий:
/UC). Пользователи получают уведомление о завершении работы, а фоновые задания принудительно останавливаются..bat или .vbs), содержащий команды пакетного запуска Конфигуратора./UpdateDBCfg для применения реструктуризации к таблицам базы данных.Если используется нетиповая конфигурация или старая редакция без БСП, логику автоматического обновления можно реализовать самостоятельно с помощью внешних сценариев (PowerShell, CMD, Bash или OneScript).
Проанализируем базовый пример кода в 1С, который проверяет наличие изменений и запускает внешний сценарий обновления:
Если КонфигурацияИзменена() Тогда
// Завершаем текущие процессы и формируем команду запуска
ПутьКБазе = СтрокаСоединенияИнформационнойБазы();
ЗапуститьПриложение("cmd.exe /c start C:\Scripts\update_rib.bat", , Ложь);
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
Рассмотрим ключевые параметры командной строки 1С, которые необходимы для написания скрипта обновления:
DESIGNER — запуск платформы в режиме Конфигуратора./UpdateDBCfg — применение изменений структуры к конфигурации базы данных (реструктуризация)./DisableStartupMessages — отключение всплывающих интерактивных диалоговых окон при старте./UC <КодРазрешения> — передача кода разрешения, если на информационную базу предварительно установлена блокировка начала сеансов./DumpResult <ПутьКФайлу> — вывод результата выполнения пакетной операции в файл (код возврата 0 свидетельствует об успешном завершении)./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
)
Для централизованного управления большим парком периферийных баз часто применяются специализированные программы (например, Обновлятор-1С) или сценарии оркестрации на базе OneScript. Такие инструменты берут на себя рутинные задачи:
rac/ras для клиент-серверных баз).При проектировании автоматического обновления периферийных узлов обратим внимание на следующие критические моменты: