Как настроить обмен между базами 1С без использования РИБ и вызова обновлений на периферийных узлах

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

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

Назначение свойства «Распределенная информационная база» в плане обмена

Рассмотрим, за что отвечает флажок «Распределенная информационная база» в свойствах плана обмена:

  1. При включенном флажке: Платформа 1С автоматически контролирует идентичность конфигураций. Изменения структуры метаданных в центральном узле передаются в сообщениях обмена. При получении такого пакета подчиненная база блокирует загрузку данных до выполнения процедуры обновления конфигурации базы данных.
  2. При снятом флажке: План обмена начинает работать в режиме обычной регистрации изменений данных. Изменения структуры метаданных не передаются, а платформа перестает требовать совпадения конфигураций.

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

Если в центральной базе создать новые документы или реквизиты, при попытке передать их в филиал возникнет ошибка сериализации XML, так как подчиненная база «не знает» о новых объектах метаданных. Чтобы избежать таких ошибок, потребуется программная фильтрация данных в обработчиках плана обмена, таких как ПриОтправкеДанныхПодчиненному или ПриОтправкеДанныхГлавным, либо ручной контроль регистрации через ПланыОбмена.ЗарегистрироватьИзменения.


Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
    // Исключаем из отправки объекты, отсутствующие в подчиненной базе
    Если ТипЗнч(ЭлементДанных) = Тип("ДокументСсылка.СпецДокументЦентра") Тогда
        ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
    КонецЕсли;
КонецПроцедуры

Альтернатива 1. Использование внешних обработок и отчетов без изменения конфигурации

Выясним причину, почему доработки центрального офиса вызывают проблемы на филиалах. Зачастую новые отчеты, печатные формы или специализированные обработки создаются непосредственно в конфигураторе центральной базы. Из-за этого меняется структура метаданных, и РИБ требует обновления периферийных узлов.

Чтобы сохранить механизм РИБ и при этом не заставлять филиалы постоянно обновляться, вынесем весь функционал центрального офиса во внешние объекты:

  1. Создадим новые отчеты и обработки как внешние файлы (.erf / .epf).
  2. Подключим их через стандартный механизм «Дополнительные внешние обработки и отчеты» в центральной базе.
  3. В этом случае структура конфигурации остается неизменной, и обмен данными по РИБ продолжается без сбоев и задержек.

Альтернатива 2. Переход на обмен по правилам (Конвертация Данных 2)

Разберем вариант полной отвязки подчиненных узлов от РИБ с переходом на самостоятельные правила обмена. Этот метод подходит, если конфигурация центрального офиса сильно отличается от конфигураций филиалов.

  1. Отключим узлы от РИБ с помощью специальной обработки или команд платформы.
  2. В конфигурации Конвертация Данных 2.1 (КД2) настроим правила конвертации объектов (ПКО) и правила выгрузки (ПВУ) между центральной базой и базами филиалов.
  3. Выгрузим правила обмена и настроим типовой обмен данными через универсальную обработку ЗагрузкаВыгрузкаДанныхXML.

Важный момент: при таком подходе при каждом добавлении новых метаданных, участвующих в обмене, придется вручную корректировать правила в КД2 и обновлять их в базах.

Альтернатива 3. Автоматизация обновления РИБ в пакетном режиме

Если отказываться от РИБ нецелесообразно из-за большого объема типовых данных, заменим ручное обновление автоматическим фоновым процессом.

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

1cv8.exe DESIGNER /F "C:\Base1C" /N "Admin" /P "Pass" /UpdateDBCfg

Параметр /UpdateDBCfg выполняет обновление конфигурации базы данных без участия пользователя. Это можно настроить через скрипты или регламентные задания во внерабочее время.

Альтернатива 4. Прямой обмен через HTTP- или Web-сервисы

Посмотрим на решение задач интеграции независимых баз с помощью Web- или HTTP-сервисов с передачей данных через XDTO-пакеты или JSON:

  1. В центральной базе или на стороне филиала создается HTTP-сервис.
  2. При оформлении документов база отправляет запрос с данными в формате JSON/XML.
  3. База-приемник обрабатывает полученный запрос и создает необходимые документы.

При таком подходе базы становятся полностью независимыми по структуре конфигураций, а обмен передает только необходимые бизнесу данные.

← На главную