Как найти и настроить правила обмена между 1С:ЗУП и 1С:ERP через универсальный формат?

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

При работе с современными конфигурациями на платформе 1С:Предприятие 8.3, такими как Зарплата и управление персоналом 3.1 и ERP Управление предприятием 2, разработчики часто сталкиваются с вопросом: куда исчезли привычные правила обмена? Если раньше мы привыкли искать XML-файлы в макетах конфигурации или планах обмена, то теперь архитектура взаимодействия изменилась. Давайте разберем, как устроена современная синхронизация через универсальный формат и как мы можем на нее повлиять.

Переход от Конвертации данных 2.0 к версии 3.0

Для начала проанализируем фундаментальное отличие. В старых решениях использовалась технология Конвертация данных 2.0. Правила (ПКО, ПКС) хранились в виде громоздких XML-структур. Современный обмен базируется на технологии EnterpriseData и Конвертации данных 3.0. Главная особенность здесь в том, что вся логика трансформации данных из объектной модели информационной базы в формат обмена (и обратно) теперь описывается программным кодом.

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

  1. В 1С:ERP это общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
  2. В 1С:ЗУП — аналогичный модуль с тем же или похожим именем (в зависимости от версии релиза).

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

Как внести изменения и не «сломать» обновления

Выясним причину, по которой прямая правка этих модулей является плохой идеей. Как справедливо отмечено в обсуждении, конфигурации ERP и ЗУП обновляются часто. При каждом обновлении (например, при переходе с версии 2.5.7 на 2.5.8) типовой модуль МенеджерОбменаЧерезУниверсальныйФормат будет полностью перезаписан. Чтобы наши доработки сохранились, мы должны использовать механизм расширений.

Разберем по шагам, как перехватить логику обмена в расширении. Нам необходимо использовать программные события, которые предоставляет платформа для модификации данных в момент синхронизации. Чаще всего используются следующие обработчики:

Рассмотрим пример кода, который можно разместить в расширении для изменения логики заполнения данных при выгрузке:


&После("ПРиВыгрузке_Документ_ВедомостьНаВыплатуЗарплаты")
Процедура Расш1_ПРиВыгрузке_Документ_ВедомостьНаВыплатуЗарплаты(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
    // Добавляем свою логику заполнения реквизита
    Если ДанныеИБ.Организация.Код = "00001" Тогда
        ДанныеXDTO.ДополнительнаяИнформация = "Спецвыплата для филиала";
    КонецЕсли;
КонецПроцедуры

Инструментарий разработчика: Конвертация данных 3.0

Несмотря на то, что правила теперь — это код, нам все еще нужен инструмент для проектирования этих правил. Для этого разработана конфигурация «Конвертация данных, редакция 3.0». Проанализируем алгоритм работы с ней:

  1. Выгружаем структуру метаданных из ЗУП и ERP с помощью специальной обработки ВыгрузкаМетаданных.epf.
  2. Загружаем эти структуры в базу КД 3.0.
  3. Загружаем в КД 3.0 текущий текст модуля МенеджерОбменаЧерезУниверсальныйФормат.
  4. В визуальном интерфейсе, который напоминает КД 2.0, настраиваем сопоставление полей и объектов.
  5. Генерируем новый программный код модуля и переносим его в конфигурацию (или в расширение).

Этот подход позволяет избежать ошибок ручного написания кода при сопоставлении сложных структур XDTO-пакетов.

Диагностика и отладка обмена EnterpriseData

Если данные уходят из ЗУП, но не появляются в ERP (или загружаются некорректно), нам необходимо выяснить причину. Посмотрим на основные способы отладки:

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

2. Проверка XML-сообщений. В настройках синхронизации данных можно включить режим сохранения файлов обмена в локальную папку. Проанализируем содержимое сформированного файла. Это поможет понять, на какой стороне проблема: если в XML данные верные — ищем ошибку в приемнике, если неверные — в источнике.

3. Журнал регистрации. При ошибках обмена через универсальный формат в журнале регистрации фиксируются детальные ошибки XDTO. Часто это связано с тем, что в правилах ожидается обязательное поле, которое в базе не заполнено. Ищите записи с типом Событие: Данные.СинхронизацияДанных.

Особенности синхронизации НСИ (Нормативно-справочной информации)

Важно помнить, что EnterpriseData сильно завязана на уникальные идентификаторы (GUID) и ключевые поля. Рассмотрим ситуацию: если вы создали сотрудника «Иванов» вручную в обеих базах, механизм обмена может создать дубль. Чтобы этого избежать, убедитесь, что настроены правила сопоставления по уникальным полям:

Если типовых полей поиска недостаточно, вы можете переопределить их в коде менеджера обмена, добавив свои условия поиска существующих объектов в базе-приемнике.

Версионность формата

При настройке обмена между ЗУП и ERP всегда обращайте внимание на версию формата EnterpriseData (например, 1.13 или 1.15). Если вы обновили ERP до версии, которая поддерживает формат 1.15, а ЗУП остался на старой версии, поддерживающей только 1.10, обмен может завершиться ошибкой из-за несовместимости схем. Всегда старайтесь поддерживать актуальные релизы обеих конфигураций, чтобы избежать конфликтов в структуре передаваемых XML-пакетов.

Таким образом, мы выяснили, что современный обмен — это гибкий программный инструмент. Хотя он требует более глубоких знаний программирования, чем старая «Конвертация 2.0», он обеспечивает гораздо более высокую скорость работы и стабильность при масштабных внедрениях 1С:ERP.

← На главную