Как настроить обмен РИБ с филиалом без добавления элемента в справочник Организации?

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

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

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

Вариант 1. Построение иерархического РИБ с полным планом обмена

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

Рассмотрим пошагово, как реализуется такая трехзвенная схема («Главный центр» → «Дочка» → «Внучка»):

  1. Обмен между Главным центром и дочерней базой настраивается по типовому плану обмена с фильтром по конкретной организации из справочника Организации.
  2. Дочерняя база назначается центральным узлом для подчиненной базы филиала.
  3. Поскольку филиал относится к той же организации и выделить его через отдельный элемент справочника Организации нельзя, обмен между «дочкой» и «внучкой» настраивается по плану обмена Полный (либо по стандартному плану обмена без установки фильтра по организации).

В такой конфигурации подчиненный филиал («внучка») получает дубликат данных дочерней базы. Если на уровне филиала не требуется полностью закрывать данные других подразделений той же организации, данный подход является наименее трудоемким в настройке.

Особенности каскадного обновления конфигурации в трехуровневом РИБ

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

  1. Изменение конфигурации выполняется в Главном центре и выгружается в файл обмена для «дочерней» базы.
  2. «Дочерняя» база принимает файл обмена, выполняет реструктуризацию базы данных в режиме Конфигуратора и запускает обработчики обновления в режиме «Предприятие».
  3. Только после завершения обновления дочерней базы формируется новый файл обмена для нижестоящего узла («внучки»).

Вариант 2. Программное ограничение миграции данных по подразделению

Если требуется, чтобы во «внучку» попадали не все документы организации, а только относящиеся к конкретному подразделению или отделу, организуют программную фильтрацию выгружаемых объектов в модуле плана обмена.

Для этого в событии ПриОтправкеДанныхПодчиненному модуля плана обмена проверяют принадлежность объекта к подразделению филиала. Разберем пример кода:


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

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

Также можно отключить автоматическую регистрацию изменений для объектов (свойство Авторегистрация = Запретить) и выполнять регистрацию программно в подписке на событие ПриЗаписи с помощью метода ПланыОбмена.ЗарегистрироватьИзменения() только при совпадении подразделения.

Вариант 3. Ограничение доступа на уровне записей (RLS)

Если физически база филиала должна содержать все данные организации, но пользователям филиала необходимо ограничить видимость чужих документов, в подчиненной базе настраивают механизмы RLS (Right-Level Security). В этом случае полнотекстовый РИБ обеспечивает полную идентичность данных, а роли и ограничения прав на уровне записей разграничивают доступ пользователей по справочнику Подразделения.

← На главную