При организации взаимодействия между центральным офисом и удаленными филиалами разработчики часто сталкиваются с техническим ограничением распределенных информационных баз (РИБ). На платформенном уровне 1С блокирует обмен данными в РИБ до тех пор, пока конфигурация периферийного узла не будет полностью обновлена до конфигурации центрального узла. Если в центре часто вносятся небольшие доработки, работа удаленных точек может парализоваться. Разберем, какие архитектурные подходы и механизмы библиотеки стандартных подсистем (БСП) позволяют обойти эти ограничения и настроить гибкую синхронизацию данных.
Проанализируем базовый принцип работы РИБ в платформах 1С:Предприятие. Когда у плана обмена включен флаг Распределенная информационная база, платформа автоматически контролирует идентичность структуры метаданных центрального и подчиненного узлов. При выгрузке изменений из центра в файл обмена помещается служебная информация о структуре конфигурации. Если периферийная база обнаруживает изменения в составе или свойствах объектов метаданных, прием данных полностью блокируется до момента применения обновлений базы данных.
Если требуется передавать только документы, справочники и регистры без обязательного применения каждой доработки конфигурации в филиале, следует использовать обмен по правилам или универсаный обмен данными (УОП). В этом случае флаг РИБ у плана обмена отключается, а синхронизация осуществляется на основе правил конвертации данных.
Рассмотрим основные технические сценарии, позволяющие организовать обмен данными при различной частоте обновления конфигураций в центре и на местах.
Если отключить признак РИБ в свойствах плана обмена, платформа перестает контролировать совпадение метаданных. В сообщения синхронизации БСП могут встраиваться актуальные правила конвертации данных (выгрузки и загрузки), благодаря чему филиальная база сможет корректно обрабатывать входящую информацию даже при разнице в релизах.
Для конфигураций на управляемых формах изменения бизнес-логики, алгоритмов проведения, печатных форм и отчетов рекомендуется реализовывать с помощью расширений (.cfe). Так как расширения не меняют структуру основной конфигурации базы данных, платформа 1С не считает такие изменения поводом для блокировки обмена РИБ.
В рамках БСП печатные формы и обработки заполнения можно поставлять в подчиненные узлы в режиме «1С:Предприятие» через справочник ДополнительныеОтчетыИОбработки, не затрагивая конфигурацию базы данных и не вызывая реструктуризацию.
Если использование РИБ с полной идентичностью метаданных необходимо, процесс применения изменений на подчиненном узле можно автоматизировать с помощью сценариев командной строки без вызова диалогов Конфигуратора.
Посмотрим на пример автоматизации процесса обновления и работы с главным узлом РИБ. Для отвязки узла, применения обновления из файла .cf или .cfu и повторной привязки к центру можно использовать программные методы и параметры запуска командной строки платформы 1С:
// Отключение главного узла в программном коде 1С перед обновлением
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
// Запуск пакетного обновления базы данных через командную строку:
// 1cv8.exe DESIGNER /F "C:\Bases\Branch" /N "Admin" /P "Password" /UpdateCfg "C:\Updates\1cv8.cfu" /UpdateDBCfg
// Восстановление связи с главным узлом после завершения обновления
ГлавныйУзел = ПланыОбмена.ГлавныйУзел();
Если Не ЗначениеЗаполнено(ГлавныйУзел) Тогда
ПланыОбмена.УстановитьГлавныйУзел(УзелЦентр);
КонецЕсли;
Выясним причину, почему этот подход удобен: удаленному пользователю достаточно запустить один исполняемый файл или командный сценарий, который завершит сеансы, обновит базу данных в пакетном режиме и возобновит синхронизацию без необходимости совершать какие-либо действия в Конфигураторе.
Таким образом, выбор между РИБ и универсальным обменом (УОП) зависит от требований к идентичности конфигураций: если необходимо минимизировать простои и не мучать филиалы регулярными обновлениями, оптимальным выбором будет синхронизация данных по правилам обмена или вынос логики в расширения.