При использовании распределенной информационной базы (РИБ) в 1С:Управление торговлей 10.3 часто возникает проблема: любое доработка конфигурации в центральном узле блокирует обмен данными до тех пор, пока конфигурация не будет обновлена на всех подчиненных узлах. Разберем, как организовать обмен между базами без жесткой привязки к РИБ и какие существуют альтернативные архитектурные решения.
Рассмотрим, за что отвечает флажок «Распределенная информационная база» в свойствах плана обмена:
Однако просто снять флажок в действующей базе недостаточно. Проанализируем, с какими трудностями мы столкнемся при отключении механизма РИБ:
Если в центральной базе создать новые документы или реквизиты, при попытке передать их в филиал возникнет ошибка сериализации XML, так как подчиненная база «не знает» о новых объектах метаданных. Чтобы избежать таких ошибок, потребуется программная фильтрация данных в обработчиках плана обмена, таких как ПриОтправкеДанныхПодчиненному или ПриОтправкеДанныхГлавным, либо ручной контроль регистрации через ПланыОбмена.ЗарегистрироватьИзменения.
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
// Исключаем из отправки объекты, отсутствующие в подчиненной базе
Если ТипЗнч(ЭлементДанных) = Тип("ДокументСсылка.СпецДокументЦентра") Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецЕсли;
КонецПроцедуры
Выясним причину, почему доработки центрального офиса вызывают проблемы на филиалах. Зачастую новые отчеты, печатные формы или специализированные обработки создаются непосредственно в конфигураторе центральной базы. Из-за этого меняется структура метаданных, и РИБ требует обновления периферийных узлов.
Чтобы сохранить механизм РИБ и при этом не заставлять филиалы постоянно обновляться, вынесем весь функционал центрального офиса во внешние объекты:
.erf / .epf).Разберем вариант полной отвязки подчиненных узлов от РИБ с переходом на самостоятельные правила обмена. Этот метод подходит, если конфигурация центрального офиса сильно отличается от конфигураций филиалов.
ЗагрузкаВыгрузкаДанныхXML.Важный момент: при таком подходе при каждом добавлении новых метаданных, участвующих в обмене, придется вручную корректировать правила в КД2 и обновлять их в базах.
Если отказываться от РИБ нецелесообразно из-за большого объема типовых данных, заменим ручное обновление автоматическим фоновым процессом.
При получении пакета с изменениями конфигурации подчиненный узел может автоматически запускать процесс обновления через пакетный режим командной строки:
1cv8.exe DESIGNER /F "C:\Base1C" /N "Admin" /P "Pass" /UpdateDBCfg
Параметр /UpdateDBCfg выполняет обновление конфигурации базы данных без участия пользователя. Это можно настроить через скрипты или регламентные задания во внерабочее время.
Посмотрим на решение задач интеграции независимых баз с помощью Web- или HTTP-сервисов с передачей данных через XDTO-пакеты или JSON:
При таком подходе базы становятся полностью независимыми по структуре конфигураций, а обмен передает только необходимые бизнесу данные.