Развитие электронного документооборота (ЭДО) ставит перед разработчиками 1С сложную задачу: как быстро и безболезненно интегрировать ЭДО в полностью самописную конфигурацию. Поскольку стандарты обмена, форматы ФНС и требования к маркировке товаров постоянно меняются, разработка системы обмена «с нуля» может превратиться в бесконечный процесс поддержки. В этой статье мы подробно проанализируем основные архитектурные подходы к встраиванию ЭДО в нетиповые решения 1С, рассмотрим работу с готовыми библиотеками, внешними шлюзами и разберем технические нюансы работы с технологией XDTO.
---
Наиболее надежный и «нативный» способ реализовать ЭДО в самописной конфигурации — использовать специализированный программный продукт от фирмы 1С, который называется Библиотека электронных документов (БЭД). Именно на основе этой библиотеки построен функционал 1С-ЭДО во всех типовых конфигурациях (УТ, ERP, КА, БП).
Рассмотрим подробнее особенности интеграции БЭД в зависимости от специфики вашей системы:
---
Если ваша самописная конфигурация слишком сильно отличается от типовых стандартов 1С или процесс интеграции БСП/БЭД в нее признан экономически нецелесообразным, отличной альтернативой станет использование специализированной конфигурации «1С:Клиент ЭДО».
Проанализируем архитектуру этого решения:
В этой схеме «1С:Клиент ЭДО» выступает в роли внешнего интеграционного шлюза. Сама база данных клиента ЭДО является типовой и регулярно обновляется силами фирмы 1С. В ней уже настроены все сертификаты, учетные записи операторов ЭДО и актуальные форматы документов.
Ваша задача как разработчика самописной базы сводится к организации обмена данными между вашей учетной системой и «1С:Клиент ЭДО». Наладить это взаимодействие можно несколькими путями:
Важный плюс решения: Пользователи могут использовать официальное мобильное приложение «1С:Клиент ЭДО» для iOS и Android, чтобы оперативно подписывать или отклонять документы прямо со смартфонов.
---
Если ваши контрагенты преимущественно работают через оператора Контур.Диадок, лучшим решением для самописной базы будет интеграция готового расширения, предоставляемого оператором.
Разберем по шагам, как устроена эта интеграция:
diadoc_um.cfe (универсальный модуль). Для его работы требуется режим совместимости платформы 8.3.14 и выше.РасходнаяНакладная) со стандартными полями и метаданными Диадока. Универсальный модуль самостоятельно выполнит всю рутину: генерацию XML по форматам ФНС, шифрование, отправку, получение статусов и подписей.diadoc_storage_cfe.cfe, которое отвечает за хранение истории обмена и связей документов.---
Иногда разработчики принимают решение писать обмен самостоятельно через прямое обращение к API оператора. При отправке сложных документов, например, Корректировочного счета-фактуры (КСФ), часто возникает необходимость импортировать XML-схему (XSD) во внутренние объекты XDTO 1С.
Выясним причину распространенной проблемы, когда импортируемый файл схемы и его типы неожиданно попадают в ветку «Свойства» дерева XDTO-пакета вместо ветки «Типы объектов»:
В стандартах построения XML-схем это абсолютно нормальное поведение. Элемент верхнего уровня (глобальный элемент) в схеме XSD всегда описывается как Свойство (Property), а не как тип. Этот элемент ссылается на определенный анонимный или именованный тип данных внутри схемы. Поэтому пугаться такого импорта не нужно.
Посмотрим на пример кода, как правильно инициализировать структуру данных для заполнения и отправки на основе такой XDTO-схемы:
// Определяем пространство имен схемы корректировочного счета-фактуры
ПространствоИменСхемы = "http://link-to-diadoc-scheme-uri";
// Сначала получаем глобальное свойство (элемент верхнего уровня)
СвойствоФайл = ФабрикаXDTO.Пакеты.Получить(ПространствоИменСхемы).Свойства.Получить("Файл");
// Создаем сам объект на основании типа данного свойства
ОбъектФайл = ФабрикаXDTO.Создать(СвойствоФайл.Тип);
// Теперь мы можем программно обращаться к вложенным свойствам и табличным частям
// Для получения вложенных объектов используем аналогичный подход:
ТипТаблицыКСФ = ФабрикаXDTO.Тип(ПространствоИменСхемы, "Файл.Документ.ТаблКСчФ");
ТабличнаяЧасть = ФабрикаXDTO.Создать(ТипТаблицыКСФ);
Использование фабрики XDTO гарантирует, что сформированный вами XML-файл будет строго соответствовать схеме, и принимающий шлюз оператора ЭДО не отклонит его на этапе валидации структуры.
---
Среди разработчиков старой школы популярен подход: «Зачем тратить время на библиотеки, если можно попросить файл-пример XML, собрать аналогичный строковыми методами или через ЗаписьXML и отправить?». На текущий момент этот подход несет в себе критические риски:
Резюме: Для быстрого старта в полностью уникальной самописной конфигурации оптимально использовать схему с базой-шлюзом «1С:Клиент ЭДО». Если же вы хотите получить максимальную интеграцию и бесшовную работу пользователей в едином окне — потратьте время на внедрение подсистем БСП и актуальной версии БЭД (1.10).