Как заставить работать правила регистрации объектов в конфигурациях на базе БСП

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

При работе с механизмом синхронизации данных в современных конфигурациях 1С (таких как ERP 2, Комплексная автоматизация 2 или Бухгалтерия предприятия 3.0), разработчики часто сталкиваются с тем, что созданные в конфигурации «Конвертация данных 2.1» правила регистрации объектов (ПРО) просто не срабатывают. Объект либо не регистрируется вовсе, либо регистрируется без учета фильтров. Рассмотрим подробно, как правильно интегрировать свои правила в экосистему Библиотеки стандартных подсистем (БСП) и какие неочевидные нюансы нужно учесть.

Разберем основы: что такое ПРО и как они связаны с БСП

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

Шаг 1. Настройка метаданных Плана обмена

Первым делом проанализируем настройки вашего Плана обмена в конфигураторе. Для того чтобы БСП начала использовать ваши программные правила, необходимо правильно настроить авторегистрацию.

  1. Откроем нужный ПланОбмена и перейдем на вкладку Состав.
  2. Для каждого объекта, который должен участвовать в обмене, установим свойство Авторегистрация в значение Запретить.

Почему это важно: Если оставить значение «Разрешить», платформа будет регистрировать объект при каждой записи автоматически, игнорируя любые фильтры, прописанные вами в «Конвертации данных». Установка «Запретить» передает управление в руки программного кода БСП, который и будет обращаться к вашим правилам.

Шаг 2. Создание и размещение макета

Система должна где-то хранить логику правил. Традиционно в БСП для этого используется макет в самом плане обмена.

Шаг 3. Регистрация плана обмена в программном коде

Даже если макет создан, БСП может «не знать», что ваш план обмена поддерживает механизм правил регистрации. Нам нужно проанализировать общий модуль ОбменДаннымиПереопределяемый.

Найдем процедуру ПолучитьПланыОбмена (или аналогичную, в зависимости от версии БСП) и добавим туда наш план обмена. Рассмотрим пример кода:


Процедура ПолучитьПланыОбмена(ПланыОбменаПоддерживающиеОбменДанными) Экспорт
    ПланыОбменаПоддерживающиеОбменДанными.Добавить(Метаданные.ПланыОбмена.МойНовыйПланОбмена);
КонецПроцедуры

Без этой регистрации типовые подписки на события, входящие в состав БСП, будут игнорировать ваш план обмена при записи объектов.

Шаг 4. Настройка подписок на события

Выясним причину, по которой код регистрации может не вызываться. Чтобы правила регистрации сработали, в системе должна существовать подписка на событие ПередЗаписью для нужных объектов.

Проанализируем существующие подписки в конфигурации. Обычно они называются по шаблону ОбменДанными[ИмяПланаОбмена]ПередЗаписью или используют общие подписки вроде ОбменДаннымиРегистрацияПередЗаписью. Нам необходимо:

  1. Убедиться, что наш документ или справочник включен в Источник подписки.
  2. Проверить, что обработчик подписки ведет на типовой метод БСП: ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью.

Если вы создаете свой план обмена «с нуля», обязательно создайте соответствующие подписки для событий ПередЗаписью и ПередУдалением, иначе фильтрация ПРО просто не будет инициирована.

Шаг 5. Обновление правил в режиме «1С:Предприятие»

Это самый важный этап, на котором часто совершаются ошибки. БСП не читает макет из конфигуратора напрямую при каждой записи. Правила кэшируются в специальном регистре сведений Правила обмена данными.

Посмотрим на алгоритм действий в пользовательском режиме:

  1. Зайдем в раздел Администрирование — Синхронизация данных.
  2. Найдем пункт Параметры синхронизации данных или напрямую откроем регистр сведений Правила обмена данными.
  3. Для вашего плана обмена выберем пункт «Загрузить правила» или нажмем кнопку Обновить все типовые правила.

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

Шаг 6. Отладка и проверка условий

Если правила всё равно не работают, проанализируем настройки самих правил в «Конвертации данных». Обратим внимание на флаг «Выполнять только при наличии изменений» в настройках ПРО. Если этот флаг установлен, а вы просто переписываете объект программно без изменения реквизитов, регистрация не произойдет.

Также в современных версиях БСП можно включить режим отладки для правил регистрации:

Итоги: контрольный список для проверки

Подведем итог всему вышесказанному. Если правила регистрации в ERP или другой БСП-конфигурации не работают, пройдите по списку:

  1. В составе плана обмена для объекта стоит Авторегистрация = Запретить.
  2. Макет в плане обмена называется именно ПравилаРегистрации.
  3. Объект добавлен в Источник соответствующей подписки на событие ПередЗаписью.
  4. План обмена зарегистрирован в модуле ОбменДаннымиПереопределяемый.
  5. В режиме «Предприятие» выполнено обновление правил в регистре Правила обмена данными.

Соблюдение этих структурных шагов гарантирует, что ваши правила регистрации будут успешно подхвачены механизмом синхронизации БСП и начнут работать согласно заложенной логике.

← На главную