При интеграции систем на платформе 1С часто возникает задача выгрузки отдельных документов или справочников в формате EnterpriseData (ED). Для этого не обязательно писать собственную логику с нуля — в Библиотеке Стандартных Подсистем (БСП) предусмотрен развитый инструментарий и сервисные модули.
Рассмотрим подробно варианты выгрузки данных: от встроенных интерактивных обработок до программного вызова функций БСП.
Интерактивные способы и настройки обмена
Перед тем как писать программный код, проанализируем доступные встроенные возможности конфигураций:
Типовая обработка БСП «Выгрузка загрузка EnterpriseData». Доступна через меню «Функции для технического специалиста» → «Обработки». С ее помощью можно выборочно выгрузить документы за определенный период без создания узлов планов обмена.
Использование узлов планов обмена. В типовых конфигурациях (например, 1С:ERP, 1С:Комплексная автоматизация или 1С:Бухгалтерия) выгрузка настраивается через универсальный формат обмена. Для выборочной выгрузки объектов используется регистрация изменений на узле (автоматическая или ручная).
Конфигурация «Конвертация данных 3.0» (КД 3). Служит для просмотра, создания и редактирования правил конвертации (ПКО) и правил обработки данных (ПОД), работающих с форматом EnterpriseData.
Программная выгрузка данных через модуль ОбменДаннымиXDTOСервер
Если необходимо выгрузить конкретный документ из произвольной обработки или фонового задания, разберем по шагам алгоритм взаимодействия с ключевым общим модулем ОбменДаннымиXDTOСервер.
Для выборочной выгрузки объектов БСП предоставляет процедуру ВыгрузкаОбъектаВыборки. Рассмотрим общую схему программного вызова:
Подготовка файла XML. Создаем объект ЗаписьXML, определяем параметры записи (кодировку, форматирование) и открываем файл для записи.
Определение версий формата. Запрашиваем поддерживаемые конфигурацией версии формата с помощью функции ОбменДаннымиXDTOСервер.ВерсииФорматаОбменаМассив().
Инициализация структуры компонентов обмена. Формируем структуру КомпонентыОбмена, содержащую ссылки на объект ЗаписьXML, фабрику XDTO и правила конвертации из модуля МенеджерОбменаЧерезУниверсальныйФормат.
Запись заголовочной части XML. Формируем необходимые служебные узлы сообщения (хедер, номер сообщения, данные отправителя и получателя).
Выгрузка документа. Вызываем процедуру выгрузки конкретного объекта выборки.
Пример программного вызова процедуры выгрузки объекта:
Параметр ПравилоОбработки может передаваться как Неопределено, если правило обработки определяется автоматически на основании типа выгружаемого объекта.
Особенности и потенциальные проблемы при выгрузке в формате EnterpriseData
При работе с выгрузкой в формате EnterpriseData проанализируем следующие ключевые нюансы:
Проверка заполнения обязательных реквизитов. В XSD-схемах формата EnterpriseData многие поля имеют строгие ограничения. Если реквизит является обязательным в схеме, а в объекте 1С он не заполнен, возникнет ошибка валидации XDTO.
Согласованность версий формата. База-источник и база-приемник должны поддерживать одну и ту же версию EnterpriseData (например, ED 1.6 или ED 1.12). Выгрузка должна производиться в максимальной общей версии формата.
Передача связанных справочников. При выборочной выгрузке одного документа важно учитывать, что связанные объекты (контрагенты, номенклатура, договоры) должны либо выгружаться вместе с документом, либо уже существовать в базе-приемнике. В противном случае ссылки могут не заполниться.
Движения регистров. Формат EnterpriseData предназначен для обмена объектами (документами и справочниками). Движения по регистрам накопления и бухгалтерии не передаются — проведение документов выполняется в базе-приемнике при загрузке.