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