Как организовать выборочную выгрузку данных в РИБ и выбрать архитектуру обмена в 1С:УПП 1.3

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

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

Выбор архитектуры: РИБ или произвольный план обмена

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

  1. Распределенная информационная база (РИБ): используется в случаях, когда конфигурации всех баз идентичны. При изменении структуры метаданных в центральном узле изменения автоматически передаются в периферийные базы вместе с пакетами обмена. Этот вариант требует минимальных затрат на сопровождение правил конвертации при регулярных обновлениях базы.
  2. Произвольный (не-РИБ) план обмена: применяется, когда структура метаданных в базах различается или требуется независимый цикл обновления конфигураций. В этом случае правила выгрузки и загрузки описываются вручную (например, через «Конвертацию данных»), однако при каждом изменении метаданных потребуется доработка и поддержка правил.

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

Способы реализации выборочной выгрузки данных в РИБ

По умолчанию полный план обмена РИБ выгружает все зарегистрированные изменения объектов. Чтобы реализовать выборочную передачу данных из центральной базы в подчиненные узлы, разберем основные технические решения.

1. Программная фильтрация в модуле плана обмена

В модуле плана обмена предусмотрены специализированные обработчики событий, срабатывающие при формировании сообщения обмена. Для управления выгрузкой в сторону подчиненного узла используется процедура ПриОтправкеДанныхПодчиненному (или ПриОтправкеДанныхГлавному для обратного потока).

Внутри обработчика проверяются условия фильтрации (например, принадлежность документа к определенной организации, складу или подразделению) и меняется значение параметра ОтправкаЭлемента:


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

КонецПроцедуры

Возможные значения параметра ОтправкаЭлемента:

  1. ОтправкаЭлементаДанных.Авто — стандартная отправка элемента.
  2. ОтправкаЭлементаДанных.Игнорировать — объект пропускается и не попадает в текущий пакет обмена.
  3. ОтправкаЭлементаДанных.Удалить — отправляет в подчиненный узел команду на удаление объекта (полезно, если объект ранее был выгружен, но затем перестал соответствовать отбору).

2. Настройка правил регистрации объектов (ПРО)

Чтобы отсекать лишние объекты ещё до момента формирования пакета обмена, применяются правила регистрации объектов, создаваемые в программе «1С:Конвертация данных 2.1».

В конфигурации «1С:Управление производственным предприятием 1.3» присутствует готовый план обмена ПоОрганизации. Если деление данных выполняется по юридическим лицам, целесообразно использовать этот штатный механизм, в котором логика отбора документов и нормативно-справочной информации уже заложена разработчиками.

3. Отключение авторегистрации и подписки на события

Если стандартный механизм РИБ регистрирует слишком много лишних данных, заполняя служебные таблицы изменений, проанализируем вариант с точечной регистрацией:

  1. В свойствах составных объектов плана обмена параметр Авторегистрация переводится в значение Запретить.
  2. Создается подписка на событие ПриЗаписи для нужных типов документов и справочников.
  3. В обработчике подписки проверяются бизнес-условия и выполняется явная вызов процедуры ПланыОбмена.ЗарегистрироватьИзменения() только для тех узлов, которым действительно предназначены данные.

Важные риски и ограничения выборочной выгрузки

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

  1. Риск битых ссылок: если выгружается документ, но связанный с ним элемент справочника (контрагент, номенклатура, договор) исключен условиями фильтрации, в подчиненной базе появится битая ссылка вида <Объект не найден>. Вся НСИ, участвующая в выгружаемых документах, должна гарантированно присутствовать в целевой базе.
  2. Разрастание таблиц регистрации: если авторегистрация включена для всех объектов, а фильтрация происходит только в момент формирования пакета (через ПриОтправкеДанныхПодчиненному), таблицы зарегистрированных изменений будут постоянно расти. Потребуется регулярно очищать невыгруженные записи из таблиц изменений.
  3. Порядок обновления конфигурации: в РИБ изменение структуры базы допустимо только в центральном узле. До тех пор пока подчиненный узел не получит и не применит обновление конфигурации из центрального узла, обмен данными для этого узла будет заблокирован платформой.
← На главную