Как сделать свой план обмена видимым в обработке «Регистрация изменений для обмена данными» в ЗУП 3.1?

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

При разработке собственных механизмов интеграции в конфигурациях на базе Библиотеки Стандартных Подсистем (БСП), таких как «1С:Зарплата и Управление Персоналом 3.1», часто возникает задача использования типовых инструментов администрирования. Одной из таких задач является отображение созданного вручную плана обмена в стандартной обработке Регистрация изменений для обмена данными.

Рассмотрим подробно, почему новый узел может быть не виден в интерфейсе, какие настройки необходимо выполнить в конфигураторе и какие функции следует реализовать для корректной работы.

1. Роль Библиотеки Стандартных Подсистем (БСП)

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

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

2. Определяемые типы — ключ к видимости

Самой частой причиной, по которой новый план обмена не отображается в обработке регистрации изменений, является его отсутствие в составе нужных Определяемых типов (DefinedTypes). Это ключевой момент настройки.

Давайте проверим состав следующих определяемых типов в дереве метаданных:

  1. ПланОбменаПоддерживающийРегистрациюИзменений (ExchangePlanSupportingChangeRegistration) — это самый важный тип. Обработка регистрации изменений строит список доступных планов обмена, опираясь именно на этот тип. Нам необходимо найти его в ветке Общие -> Определяемые типы, открыть его свойства и на вкладке «Тип» отметить галочкой наш новый план обмена.
  2. ОбъектСРазрешеннойРегистрациейОбъектов — также рекомендуется проверить включение в этот тип, если планируется использование расширенных возможностей регистрации.

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

3. Программная регистрация плана обмена

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

Нам нужно найти общий модуль, который обычно называется ОбменДаннымиПереопределяемый (DataExchangeOverridable). В нем нас интересует процедура ПриПолученииПлановОбмена.

Давайте посмотрим, как выглядит примерный код регистрации:


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

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

4. Модуль менеджера плана обмена

Автор темы спрашивал о функциях в модуле менеджера. Хотя для того, чтобы узел просто «появился» в списке выбора, функции модуля менеджера могут и не потребоваться (если выполнен пункт с Определяемыми типами), для корректной работы системы нам следует придерживаться стандартов.

Рекомендуем обратить внимание на типовые планы обмена, например ОбменЗарплата3Бухгалтерия3. Если мы откроем его модуль менеджера, то увидим, что БСП ожидает наличия определенных настроек.

Обычно это процедура инициализации настроек, которая может выглядеть так (сигнатура может отличаться в зависимости от версии БСП, всегда сверяйтесь с документацией на ИТС для вашей версии):


// Настройки обмена данными.
//
// Параметры:
//   Настройки - Структура - настройки плана обмена.
//
Процедура ПриПолученииНастроек(Настройки) Экспорт
    
    Настройки.ИмяМакетаПравилРегистрации = "ПравилаРегистрации";
    Настройки.ИмяМакетаПравилОбмена      = "ПравилаОбмена";
    
    // Другие настройки, специфичные для вашего обмена
    
КонецПроцедуры

5. Подписки на события

В обсуждении упоминалось, что обработка «смотрит» на подписки. Это верное замечание, но с оговоркой. Подписки на события (Event Subscriptions) нужны не столько для отображения самого узла в списке, сколько для:

  1. Автоматической регистрации изменений при записи объектов (документов, справочников).
  2. Корректной работы отчетов по составу отправляемых данных.

Чтобы система работала правильно, нам нужно создать подписки на события (обычно ПередЗаписью, ПриЗаписи, ПередУдалением) для объектов, входящих в состав нашего плана обмена. В качестве обработчика эти подписки должны вызывать процедуры из модуля ОбменДаннымиСобытия.

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

6. Практический метод отладки

Если вы выполнили настройки определяемых типов, но план обмена все равно не виден, применим метод, предложенный в обсуждении — отладку.

Обработка Регистрация изменений для обмена данными является внешней или встроенной частью конфигурации. Если она встроенная:

  1. Найдем её в дереве метаданных: Обработки -> РегистрацияИзмененийДляОбменаДанными.
  2. Откроем модуль формы или модуль объекта.
  3. Поставим точку останова в процедуре ПриСозданииНаСервере или в месте, где заполняется список узлов.
  4. Запустим предприятие и откроем обработку.

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

7. Чек-лист для проверки

Давайте резюмируем действия для решения проблемы:

  1. Определяемые типы: Убедитесь, что ваш ПланОбмена добавлен в тип ПланОбменаПоддерживающийРегистрациюИзменений.
  2. Наличие узлов: Убедитесь, что в режиме Предприятия создан хотя бы один узел обмена, отличный от предопределенного (ЭтотУзел). Обработка может скрывать план обмена, если для него нет активных узлов-корреспондентов.
  3. Права доступа: Проверьте, есть ли у текущего пользователя права на чтение и просмотр нового плана обмена.
  4. Регистрация в БСП: Проверьте наличие кода регистрации в ОбменДаннымиПереопределяемый (если это требуется вашей версией БСП).

Следуя этому плану, вы гарантированно обеспечите видимость вашего плана обмена в типовых инструментах ЗУП 3.1.

← На главную