При выделении отдельной работы пользователей в филиалах или дочерних базах часто возникает задача: передавать из периферийных информационных баз все данные в центральную, а из центральной выгружать лишь часть сведений. Проанализируем варианты архитектуры обмена для конфигурации «1С:Управление производственным предприятием 1.3» и рассмотрим механизмы фильтрации данных.
Перед началом настройки необходимо определиться со способом организации обмена. В платформе 1С доступно два основных подхода:
Если задача заключается только в разграничении данных между периферийными узлами при одинаковой конфигурации, рекомендуется использовать РИБ. Это позволит избежать лишней трудоемкости при поддержке обмена после обновлений конфигурации.
По умолчанию полный план обмена РИБ выгружает все зарегистрированные изменения объектов. Чтобы реализовать выборочную передачу данных из центральной базы в подчиненные узлы, разберем основные технические решения.
В модуле плана обмена предусмотрены специализированные обработчики событий, срабатывающие при формировании сообщения обмена. Для управления выгрузкой в сторону подчиненного узла используется процедура ПриОтправкеДанныхПодчиненному (или ПриОтправкеДанныхГлавному для обратного потока).
Внутри обработчика проверяются условия фильтрации (например, принадлежность документа к определенной организации, складу или подразделению) и меняется значение параметра ОтправкаЭлемента:
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, Сообщение)
// Проверяем тип отправляемого объекта
Если ТипЗнч(ЭлементДанных) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// Если документ не относится к организации узла — отменяем выгрузку
Если ЭлементДанных.Организация <> Сообщение.Получатель.Организация Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Возможные значения параметра ОтправкаЭлемента:
ОтправкаЭлементаДанных.Авто — стандартная отправка элемента.ОтправкаЭлементаДанных.Игнорировать — объект пропускается и не попадает в текущий пакет обмена.ОтправкаЭлементаДанных.Удалить — отправляет в подчиненный узел команду на удаление объекта (полезно, если объект ранее был выгружен, но затем перестал соответствовать отбору).Чтобы отсекать лишние объекты ещё до момента формирования пакета обмена, применяются правила регистрации объектов, создаваемые в программе «1С:Конвертация данных 2.1».
В конфигурации «1С:Управление производственным предприятием 1.3» присутствует готовый план обмена ПоОрганизации. Если деление данных выполняется по юридическим лицам, целесообразно использовать этот штатный механизм, в котором логика отбора документов и нормативно-справочной информации уже заложена разработчиками.
Если стандартный механизм РИБ регистрирует слишком много лишних данных, заполняя служебные таблицы изменений, проанализируем вариант с точечной регистрацией:
Авторегистрация переводится в значение Запретить.ПриЗаписи для нужных типов документов и справочников.ПланыОбмена.ЗарегистрироватьИзменения() только для тех узлов, которым действительно предназначены данные.При организации выборочной выгрузки данных в РИБ необходимо учитывать следующие технические особенности платформы:
<Объект не найден>. Вся НСИ, участвующая в выгружаемых документах, должна гарантированно присутствовать в целевой базе.ПриОтправкеДанныхПодчиненному), таблицы зарегистрированных изменений будут постоянно расти. Потребуется регулярно очищать невыгруженные записи из таблиц изменений.