Как передать контактную информацию контрагента при выгрузке через Конвертацию Данных 2.1?

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

При настройке обмена данными между конфигурациями (например, из УПП в БУХ) часто возникает задача переноса дополнительных сведений, которые хранятся не в самом объекте, а в регистрах сведений. Классический пример — КонтактнаяИнформация. Если вы переносите документы и контрагентов, но контактные данные не «подтягиваются» автоматически, необходимо реализовать их выгрузку вручную.

Разбор механизма выгрузки

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

Не стоит пытаться искать готовую функцию ВыгрузитьРегистр в стандартном ядре Конвертации Данных, так как ее там нет. Ошибка, возникающая при попытке её вызова, вполне ожидаема. Мы реализуем логику самостоятельно, используя стандартный метод ВыгрузитьПоПравилу().

Пошаговая реализация переноса данных

Чтобы успешно передать контактную информацию, выполним следующие действия:

  1. Создадим отдельное ПКО для регистра сведений КонтактнаяИнформация. В нем настроим правила конвертации свойств для всех необходимых полей (тип, вид, представление и т.д.).
  2. Перейдем в ПКО Контрагенты в обработчик ПослеВыгрузки.
  3. Напишем код, который выбирает нужные записи из регистра для текущего контрагента и отправляет их в обменный файл.

Рассмотрим пример кода, который нужно разместить в обработчике ПослеВыгрузки:


// Создаем набор записей для регистра контактной информации
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();

// Устанавливаем отбор по текущему контрагенту (Источник - это текущий объект контрагента)
НаборЗаписей.Отбор.Объект.Установить(Источник);

// Читаем записи из базы данных
НаборЗаписей.Прочитать();

// Перебираем полученные записи и вызываем для каждой правило конвертации
Для Каждого Запись Из НаборЗаписей Цикл
    ВыгрузитьПоПравилу(Запись, , , , "ПравилоКонвертацииКонтактнойИнформации");
КонецЦикла;

Важные замечания по работе метода

При использовании данного подхода важно учитывать несколько нюансов, которые помогут избежать типичных ошибок при обмене:

Почему это решение эффективно?

Использование ВыгрузитьПоПравилу() внутри ПослеВыгрузки — это самый «чистый» способ работы в Конвертации Данных 2.1. Мы не затрагиваем основной механизм обмена, не пытаемся внедрять сторонние функции, а используем штатные возможности обработки.

Таким образом, мы добиваемся того, что вместе с каждым контрагентом в пакет выгрузки попадают только актуальные для него контактные данные, не перегружая базу лишней информацией из регистра КонтактнаяИнформация, которая относится к другим объектам.

Надеемся, данный разбор поможет вам легко интегрировать перенос контактной информации в ваши правила обмена!

← На главную