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

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

При работе с крупными международными и европейскими поставщиками часто возникает требование обмениваться документами (в частности, заказами на поставку — ORDERS) в стандарте UN/EDIFACT. Разработчики 1С при встрече с этой задачей нередко ожидают увидеть привычный XML-формат или выгрузку в формате CommerceML, однако EDIFACT имеет принципиально иную структуру и правила формирования.

Разберем подробно, что представляет собой этот формат, почему для него не существует универсальной обработки .epf и какими способами можно организовать выгрузку заказов из 1С.

Суть формата EDIFACT и его отличия от XML и CommerceML

В отличие от XML или JSON, формат EDIFACT — это строчный текстовый формат с жесткой структурой сегментов и специальных разделителей. Каждая строка документа представляет собой определенный сегмент данных, завершающийся специальным символом (как правило, апострофом ').

Разберем основные составляющие структурыEDIFACT-сообщения типа ORDERS:

  1. UNB — служебный заголовок взаимообмена (содержит GLN отправителя и получателя, дату и время).
  2. UNH — заголовок сообщения (указывает тип документа, например ORDERS, и версию стандарта, например D96A).
  3. BGM — начало сообщения (номер и тип документа).
  4. NAD — наименование и адреса участников (покупатель, поставщик, точка доставки).
  5. LIN — строка позиции заказа (номер строки, штрихкод/GTIN товара).
  6. QTY — количество товара по позиции.
  7. UNT / UNZ — контрольные сегменты завершения сообщения и взаимообмена.

В формате применяются строго определенные разделители элементов:

Главная сложность заключается в том, что несмотря на наличие международного стандарта ISO, почти каждый контрагент использует свое руководство по внедрению — MIG (Message Implementation Guideline). Из-за разного набора обязательных полей универсальной универсальной внешней обработки «Выгрузка в EDIFACT» в природе не существует — решение всегда адаптируется под требования конкретного получателя.

Архитектура обмена: варианты взаимодействия

Проанализируем две основные схемы передачи EDIFACT-документов между вашей базой 1С и европейским контрагентом.

Схема 1. Работа через EDI-провайдера (промежуточная конвертация)

В этой схеме 1С генерирует данные в привычном формате (например, XML или модифицированный CommerceML) и отправляет их на Web-сервис EDI-провайдера. Провайдер, зная спецификацию конкретного получателя, автоматически транслирует полученный XML в текстовый файл EDIFACT и доставляет его адресату.

Преимущества метода:

Схема 2. Прямая генерация файла в 1С и отправка контрагенту

Если контрагент предоставляет прямой доступ по FTP/SFTP или готов принимать файлы по e-mail/HTTP, генерацию файла EDIFACT можно выполнить средствами 1С.

Рассмотрим, как это реализовать программно с помощью объекта ЗаписьТекста.


// Пример формирования текстового файла EDIFACT (ORDERS) из документа 1С
ПутьКФайлу = "C:\EDI\orders_out.edi";

// Текстовый файл создается в кодировке ANSI (ISO-8859-1) или Windows-1251 согласно MIG контрагента
Запись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.ANSI);

// 1. Служебный заголовок конверта (UNB)
// UNB + Синтаксис + GLN_Отправителя + GLN_Получателя + Дата:Время + ИД_Обмена'
Запись.ЗаписатьСтроку("UNB+UNOA:2+4601234567890:14+4012345678901:14+231025:1430+00001'");

// 2. Заголовок сообщения (UNH) и документа (BGM)
Запись.ЗаписатьСтроку("UNH+1+ORDERS:D:96A:UN:EAN008'");
Запись.ЗаписатьСтроку("BGM+220+ПО-000123+9'");

// 3. Данные о покупателе (BY) и поставщике (SU)
Запись.ЗаписатьСтроку("NAD+BY+4601234567890::9'");
Запись.ЗаписатьСтроку("NAD+SU+4012345678901::9'");

// 4. Обход табличной части документа ЗаказПокупателя
Для Каждого Стр Из ЗаказПокупателя.Товары Цикл
    // LIN + НомерСтроки + + Штрихкод:ТипКода'
    Запись.ЗаписатьСтроку("LIN+" + Формат(Стр.НомерСтроки, "ЧГ=0") + "++" + Стр.Штрихкод +:SRV'");
    // QTY + КодТипаКоличества:Количество:ЕдиницаИзмерения'
    Запись.ЗаписатьСтроку("QTY+21:" + Формат(Стр.Количество, "ЧФ=ND=3; ЧРД=.; ЧГ=0") + ":PCE'");
КонецЦикла;

// 5. Завершающие контрольные сегменты
Запись.ЗаписатьСтроку("UNT+8+1'"); // 8 — количество сегментов в сообщении
Запись.ЗаписатьСтроку("UNZ+1+00001'");

Запись.Закрыть();

Для отправки сформированного файла прямо из 1С по защищенному протоколу FTP используются стандартные объекты платформы FTPСоединение или HTTPСоединение.

Пошаговый план реализации выгрузки

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

  1. Запросить документацию (MIG): Попросите у технического специалиста поставщика документ Message Implementation Guideline для сообщения ORDERS. В нем указаны версия формата (например, D96A или D01B), обязательные сегменты и поля.
  2. Согласовать канал передачи: Уточните, принимает ли контрагент файлы напрямую (SFTP, HTTPS, AS2) или обмен происходит только через специализированного EDI-провайдера.
  3. Определить способ разработки в 1С:
    • Если используется EDI-провайдер — выгружайте данные из 1С в формате XML/CommerceML через его интеграционный модуль.
    • Если обмен прямой — реализуйте генерацию текстового файла с помощью ЗаписьТекста по полученному спец-шаблону.
  4. Провести тестирование: Передайте тестовый файл контрагенту для проверки валидатором EDIFACT на соответствие их структуре.
← На главную