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