Как встроить функционал ЭДО в самописную конфигурацию 1С?

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

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

---

Вариант 1. Встраивание Библиотеки электронных документов (БЭД)

Наиболее надежный и «нативный» способ реализовать ЭДО в самописной конфигурации — использовать специализированный программный продукт от фирмы 1С, который называется Библиотека электронных документов (БЭД). Именно на основе этой библиотеки построен функционал 1С-ЭДО во всех типовых конфигурациях (УТ, ERP, КА, БП).

Рассмотрим подробнее особенности интеграции БЭД в зависимости от специфики вашей системы:

  1. Выбор версии библиотеки под вашу платформу. Если ваша самописная база работает на старых версиях платформы (например, 8.2 или 8.3 в режиме совместимости) и использует обычные формы, вам придется ориентироваться на архивные версии БЭД (например, редакцию 1.1). Для современных управляемых форм (начиная с платформы 8.3.12/8.3.14 и выше) используются актуальные редакции БЭД 1.9 и 1.10.
  2. Взаимосвязь с БСП. БЭД не является полностью автономной библиотекой. Для ее полноценного функционирования в вашу конфигурацию должны быть интегрированы базовые подсистемы Библиотеки стандартных подсистем (БСП) и Библиотеки интернет-поддержки пользователей (БИП). Это необходимо для работы с регламентными заданиями, механизмами криптографии, адресацией документов и авторизацией на серверах обновлений.
  3. Преимущества интеграции БЭД. Встраивая современную БЭД, вы «из коробки» получаете поддержку сложнейших механизмов автоматизации:
    • Работа с Машиночитаемыми доверенностями (МЧД) (создание, подписание, проверка цепочек доверенностей).
    • Автоматическое наложение графического штампа визуализации электронной подписи на документы форматов PDF и RTF.
    • Корректная отправка сведений о маркируемых товарах («Честный Знак») и кодов прослеживаемости в соответствии с актуальным законодательством.

---

Вариант 2. Использование конфигурации «1С:Клиент ЭДО» как внешнего шлюза

Если ваша самописная конфигурация слишком сильно отличается от типовых стандартов 1С или процесс интеграции БСП/БЭД в нее признан экономически нецелесообразным, отличной альтернативой станет использование специализированной конфигурации «1С:Клиент ЭДО».

Проанализируем архитектуру этого решения:

В этой схеме «1С:Клиент ЭДО» выступает в роли внешнего интеграционного шлюза. Сама база данных клиента ЭДО является типовой и регулярно обновляется силами фирмы 1С. В ней уже настроены все сертификаты, учетные записи операторов ЭДО и актуальные форматы документов.

Ваша задача как разработчика самописной базы сводится к организации обмена данными между вашей учетной системой и «1С:Клиент ЭДО». Наладить это взаимодействие можно несколькими путями:

Важный плюс решения: Пользователи могут использовать официальное мобильное приложение «1С:Клиент ЭДО» для iOS и Android, чтобы оперативно подписывать или отклонять документы прямо со смартфонов.

---

Вариант 3. Интеграция с Контур.Диадок через «Подключаемый модуль»

Если ваши контрагенты преимущественно работают через оператора Контур.Диадок, лучшим решением для самописной базы будет интеграция готового расширения, предоставляемого оператором.

Разберем по шагам, как устроена эта интеграция:

  1. Использование расширений конфигурации. Вместо изменения кода вашей основной конфигурации используется готовое расширение diadoc_um.cfe (универсальный модуль). Для его работы требуется режим совместимости платформы 8.3.14 и выше.
  2. Механизм «Подключаемого модуля» (ПМ). Это специальная внешняя обработка-прослойка. Вы, как разработчик самописной базы, один раз прописываете в коде этой обработки правила сопоставления ваших уникальных документов (например, самописного документа РасходнаяНакладная) со стандартными полями и метаданными Диадока. Универсальный модуль самостоятельно выполнит всю рутину: генерацию XML по форматам ФНС, шифрование, отправку, получение статусов и подписей.
  3. Архив документов. Чтобы не перегружать метаданные вашей самописной системы, вы можете использовать второе готовое расширение — diadoc_storage_cfe.cfe, которое отвечает за хранение истории обмена и связей документов.

---

Вариант 4. Технические нюансы работы с XDTO-схемами при ручной интеграции

Иногда разработчики принимают решение писать обмен самостоятельно через прямое обращение к API оператора. При отправке сложных документов, например, Корректировочного счета-фактуры (КСФ), часто возникает необходимость импортировать XML-схему (XSD) во внутренние объекты XDTO 1С.

Выясним причину распространенной проблемы, когда импортируемый файл схемы и его типы неожиданно попадают в ветку «Свойства» дерева XDTO-пакета вместо ветки «Типы объектов»:

В стандартах построения XML-схем это абсолютно нормальное поведение. Элемент верхнего уровня (глобальный элемент) в схеме XSD всегда описывается как Свойство (Property), а не как тип. Этот элемент ссылается на определенный анонимный или именованный тип данных внутри схемы. Поэтому пугаться такого импорта не нужно.

Посмотрим на пример кода, как правильно инициализировать структуру данных для заполнения и отправки на основе такой XDTO-схемы:


// Определяем пространство имен схемы корректировочного счета-фактуры
ПространствоИменСхемы = "http://link-to-diadoc-scheme-uri";

// Сначала получаем глобальное свойство (элемент верхнего уровня)
СвойствоФайл = ФабрикаXDTO.Пакеты.Получить(ПространствоИменСхемы).Свойства.Получить("Файл");

// Создаем сам объект на основании типа данного свойства
ОбъектФайл = ФабрикаXDTO.Создать(СвойствоФайл.Тип);

// Теперь мы можем программно обращаться к вложенным свойствам и табличным частям
// Для получения вложенных объектов используем аналогичный подход:
ТипТаблицыКСФ = ФабрикаXDTO.Тип(ПространствоИменСхемы, "Файл.Документ.ТаблКСчФ");
ТабличнаяЧасть = ФабрикаXDTO.Создать(ТипТаблицыКСФ);

Использование фабрики XDTO гарантирует, что сформированный вами XML-файл будет строго соответствовать схеме, и принимающий шлюз оператора ЭДО не отклонит его на этапе валидации структуры.

---

Почему ручная сборка XML «по аналогии» крайне опасна?

Среди разработчиков старой школы популярен подход: «Зачем тратить время на библиотеки, если можно попросить файл-пример XML, собрать аналогичный строковыми методами или через ЗаписьXML и отправить?». На текущий момент этот подход несет в себе критические риски:

Резюме: Для быстрого старта в полностью уникальной самописной конфигурации оптимально использовать схему с базой-шлюзом «1С:Клиент ЭДО». Если же вы хотите получить максимальную интеграцию и бесшовную работу пользователей в едином окне — потратьте время на внедрение подсистем БСП и актуальной версии БЭД (1.10).

← На главную