Как программно выгрузить документ в формате EnterpriseData с помощью механизмов БСП?

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

При интеграции систем на платформе 1С часто возникает задача выгрузки отдельных документов или справочников в формате EnterpriseData (ED). Для этого не обязательно писать собственную логику с нуля — в Библиотеке Стандартных Подсистем (БСП) предусмотрен развитый инструментарий и сервисные модули.

Рассмотрим подробно варианты выгрузки данных: от встроенных интерактивных обработок до программного вызова функций БСП.

Интерактивные способы и настройки обмена

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

  1. Типовая обработка БСП «Выгрузка загрузка EnterpriseData». Доступна через меню «Функции для технического специалиста» → «Обработки». С ее помощью можно выборочно выгрузить документы за определенный период без создания узлов планов обмена.
  2. Использование узлов планов обмена. В типовых конфигурациях (например, 1С:ERP, 1С:Комплексная автоматизация или 1С:Бухгалтерия) выгрузка настраивается через универсальный формат обмена. Для выборочной выгрузки объектов используется регистрация изменений на узле (автоматическая или ручная).
  3. Конфигурация «Конвертация данных 3.0» (КД 3). Служит для просмотра, создания и редактирования правил конвертации (ПКО) и правил обработки данных (ПОД), работающих с форматом EnterpriseData.

Программная выгрузка данных через модуль ОбменДаннымиXDTOСервер

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

Для выборочной выгрузки объектов БСП предоставляет процедуру ВыгрузкаОбъектаВыборки. Рассмотрим общую схему программного вызова:

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

Пример программного вызова процедуры выгрузки объекта:


// Вызов процедуры выгрузки конкретного документа или справочника
ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(
    КомпонентыОбмена, 
    СсылкаНаДокумент, 
    ПравилоОбработки
);

Параметр ПравилоОбработки может передаваться как Неопределено, если правило обработки определяется автоматически на основании типа выгружаемого объекта.

Особенности и потенциальные проблемы при выгрузке в формате EnterpriseData

При работе с выгрузкой в формате EnterpriseData проанализируем следующие ключевые нюансы:

  1. Проверка заполнения обязательных реквизитов. В XSD-схемах формата EnterpriseData многие поля имеют строгие ограничения. Если реквизит является обязательным в схеме, а в объекте 1С он не заполнен, возникнет ошибка валидации XDTO.
  2. Согласованность версий формата. База-источник и база-приемник должны поддерживать одну и ту же версию EnterpriseData (например, ED 1.6 или ED 1.12). Выгрузка должна производиться в максимальной общей версии формата.
  3. Передача связанных справочников. При выборочной выгрузке одного документа важно учитывать, что связанные объекты (контрагенты, номенклатура, договоры) должны либо выгружаться вместе с документом, либо уже существовать в базе-приемнике. В противном случае ссылки могут не заполниться.
  4. Движения регистров. Формат EnterpriseData предназначен для обмена объектами (документами и справочниками). Движения по регистрам накопления и бухгалтерии не передаются — проведение документов выполняется в базе-приемнике при загрузке.
← На главную