Как выгрузить и доработать правила конвертации в современных конфигурациях 1С

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

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

Понимаем разницу между КД 2.0 и КД 3.0 (Универсальный формат)

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

  1. Конвертация данных 2.0: Вся логика преобразования объектов (какой реквизит в какой переносится) хранится в одном XML-файле. Этот файл можно выгрузить, отредактировать в программе «Конвертация данных 2.0» и загрузить обратно.
  2. Конвертация данных 3.0 (Универсальный формат / EnterpriseData): Здесь логика преобразования «зашита» непосредственно в программный код конфигурации. Обмен происходит через промежуточное звено — XDTO-пакет EnterpriseData. Объекты сначала преобразуются в этот формат, а затем база-приемник читает их из этого формата.

Выясним причину отсутствия кнопки: так как правила конвертации теперь являются частью программного кода общего модуля, их невозможно просто «выгрузить в XML» одной кнопкой. В XML-файлах по-прежнему могут храниться только правила регистрации (условия, при которых объект помечается к выгрузке), поэтому программа предлагает сохранить именно их.

Где найти программный код правил конвертации

Проанализируем структуру конфигурации. Если ваша синхронизация работает через универсальный формат, то вся основная логика сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Рассмотрим подробнее, как устроена работа в этом модуле:

Для каждого типа объекта (документа или справочника) в модуле существуют специализированные процедуры. Например:

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


Процедура Пр_Отправка_Справочник_Номенклатура(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
    // Здесь описывается логика заполнения полей XDTO на основании данных из базы
    ДанныеXDTO.Наименование = ДанныеИБ.Наименование;
    ДанныеXDTO.Артикул = ДанныеИБ.Артикул;
КонецПроцедуры

Как получить правила для редактирования в КД 3.0

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

  1. Выгрузка описания метаданных: Используем обработку «Выгрузка описания метаданных» (она входит в поставку КД 3.0), чтобы получить структуру ваших конфигураций (УТ и БП) в формате XML.
  2. Загрузка в КД 3.0: Загружаем полученные файлы в базу «Конвертация данных 3.0».
  3. Использование файлов-заготовок: Разработчики 1С часто прикладывают к дистрибутивам обновлений или публикуют на сайте ИТС готовые XML-файлы правил для импорта в КД 3.0. Поищем их в папках \SyncFiles или \ExchangeRules в каталоге установки шаблонов конфигурации. Эти файлы — не сами правила для работы обмена, а «проекты» для КД 3.0, из которых потом генерируется код.

Методы безопасной доработки правил

Рассмотрим ситуацию, когда нам нужно внести изменения в типовой обмен. Править общий модуль МенеджерОбменаЧерезУниверсальныйФормат напрямую — плохая практика, так как это создаст огромные сложности при обновлении. Проанализируем более современные способы:

Способ 1: Использование расширений. Это самый правильный метод. Мы создаем расширение конфигурации и перехватываем события модуля менеджера обмена. Используем аннотации &Вместо, &Перед или &После для корректировки логики.

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

  1. Копируем весь текст модуля МенеджерОбменаЧерезУниверсальныйФормат в модуль объекта новой внешней обработки.
  2. Вносим необходимые правки в обработке.
  3. Загружаем обработку в настройках синхронизации. Программа будет использовать код из файла вместо кода из конфигурации.

Где еще могут «прятаться» правила (КД 2.0)

Если ваша конфигурация использует старый механизм обмена (не Универсальный формат), то правила действительно могут храниться в макетах. Выясним, как их найти:

Откроем конфигуратор и через глобальный поиск (Ctrl+Shift+F) попробуем найти строку "ПравилаОбмена>". Скорее всего, поиск приведет нас к макетам Планов Обмена. Если правила находятся там, мы можем сохранить содержимое макета в файл XML и открыть его в «Конвертации данных 2.0».

Также проверим Регистр сведений «Правила для обмена данными». В некоторых конфигурациях (через «Все функции» или «Функции для технического специалиста») можно зайти в этот регистр и найти записи для вашей настройки обмена. Там часто присутствуют кнопки «Сохранить правила конвертации в файл».

Практические советы по отладке

Поскольку в КД 3.0 правила — это обычный код 1С, процесс отладки становится прозрачнее. Разберем, как проанализировать ошибки:

Таким образом, мы выяснили, что отсутствие кнопки выгрузки правил — это не ошибка, а особенность современной архитектуры 1С. Основная работа теперь ведется не в графическом редакторе правил, а непосредственно в программном коде с использованием механизмов XDTO.

← На главную