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