При организации распределенных информационных баз (РИБ) в типовой конфигурации «1С:Бухгалтерия предприятия 3.0» часто возникает задача развертывания или обновления подчиненных баз, которые должны работать полностью автономно. При этом требуется передавать в периферийную базу только изменения структуры (метаданные), избегая миграции документов, справочников и регистров.
Рассмотрим подводные камни этой задачи, технические ограничения Библиотеки стандартных подсистем (БСП) и основные варианты решения.
Попытка использовать механизм РИБ исключительно для обновления структуры данных без обмена элементами сталкивается со следующими проблемами:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено) или параметр запуска Конфигуратора /ResetMasterNode отключает РИБ на уровне платформы, но в базе остаются активными служебные константы, такие как НастройкаПодчиненногоУзлаРИБЗавершена и ЭтоАвтономноеРабочееМесто. Если не сбросить их значения, база будет запрашивать восстановление связи с главным узлом или ограничит редактирование данных.Проанализируем вариант, когда связь РИБ сохраняется, но в периферийную базу передаются только изменения структуры конфигурации и предопределенных данных.
Для блокировки передачи бизнес-данных переопределим обработку выгрузки в модуле плана обмена. В событии ПриОтправкеДанныхПодчиненному установим игнорирование элементов данных:
Процедура ПриОтправкеДанныхПодчиненному(Элемент, ОтправкаЭлемента, СозданиеНачальногоОбраза)
// Игнорируем отправку объектов данных, оставляя только изменения конфигурации
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецПроцедуры
Чтобы предопределенные данные (новые счета учета, справочники) корректно создавались на стороне периферийной базы при обновлении конфигурации базы данных, изменим свойство АвтоСозданиеПредопределенныхДанных у узла плана обмена или соответствующих объектов на СоздаватьАвтоматически.
Если требуется получить полностью независимую информационную базу с идентичными UUID предопределенных элементов, разберем по шагам следующий подход:
/ResetMasterNode или выполним код в режиме «1С:Предприятие»:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Установить(Ложь);
Константы.ЭтоАвтономноеРабочееМесто.Установить(Ложь);
Выясним, как обойтись без механизмов РИБ, если требуется лишь поставлять обновления структуры в автономные базы.
.cf) из центральной базы.
1cv8.exe DESIGNER /IBConnectionString "..." /UpdateCfg "C:\Updates\1cv8.cf" /UpdateDBCfg
ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы();
Выбор конкретной методики зависит от требований к идентичности идентификаторов объектов (UUID) и необходимости поддерживать постоянный канал обновления конфигурации.