Как программно создать и массово отправить документы через ЭДО в 1С:Бухгалтерия КОРП

Программист 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Автоматизация электронного документооборота (ЭДО) становится критически важной задачей при больших объемах реализации. В типовых решениях, таких как 1С:Бухгалтерия предприятия КОРП, уже заложены механизмы для работы с электронными документами, однако их программное использование требует понимания архитектуры системы. В этой статье мы разберем, как реализовать создание и отправку документов (УПД, счета-фактуры, счета) программным способом, минимизируя ручные операции, и рассмотрим готовую подсистему Смена форматов исходящих электронных документов и настроек ЭДО, которая упрощает управление параметрами отправки.

Архитектура решения: встроенная Библиотека электронных документов (БЭД)

Прежде всего, проанализируем, как 1С работает с ЭДО внутри. В современных конфигурациях используется подсистема БЭД (Библиотека электронных документов), которая предоставляет унифицированный интерфейс для взаимодействия с разными операторами. Мы не будем писать интеграцию с API оператора (Диадок или СБИС) с чистого листа, так как это потребует ручного формирования сложных XML-файлов по форматам ФНС, хотя для специфических задач может пригодиться формирование файла типа xml для формализованных документов на основании данных бухгалтерии. Вместо этого мы задействуем программный интерфейс 1С-ЭДО.

Рассмотрим основные шаги, которые нам необходимо выполнить:

  1. Подготовка учетного документа (например, РеализацияТоваровУслуг).
  2. Формирование электронного документа (ЭД) на основании учетного.
  3. Подписание сформированного пакета данных.
  4. Отправка документа через сервер оператора.

Программное формирование электронных документов

Для создания электронного документа на основании ссылки на реализацию или счет, мы воспользуемся методами общего модуля ЭлектронныеДокументыПередача. Основным инструментом здесь выступает метод СформироватьЭлектронныеДокументыПоОбъектамУчета. Он берет на себя всю тяжелую работу по проверке форматов и заполнению реквизитов XML-файла. Отметим, что для определенных типов документов существует автоматическая отправка счетов покупателю в формате PDF через ЭДО (удобно через массовая отправка счетов и УПД через ЭДО), что расширяет стандартные возможности системы.


МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(СсылкаНаДокументРеализации);

// Параметры формирования
ПараметрыФормирования = ЭлектронныеДокументыСлужебный.ПараметрыФормированияЭлектронныхДокументов();
ПараметрыФормирования.ИнтерактивнаяОтправка = Ложь;

// Вызов формирования
Результат = ЭлектронныеДокументыПередача.СформироватьЭлектронныеДокументыПоОбъектамУчета(МассивОбъектов, ПараметрыФормирования);

Если Результат.Сформировано Тогда
    Сообщить("Электронный документ успешно сформирован и ожидает подписания.");
Иначе
    Сообщить("Ошибка формирования: " + Результат.ТекстОшибки);
КонецЕсли;

Выясним причину, почему это лучше ручного формирования: 1С автоматически проверит настройки ЭДО с конкретным контрагентом и выберет нужный формат (например, 5.01 или 5.02 для УПД), исходя из учетной политики и соглашений. Если ваша организация переходит на новые стандарты, вам может потребоваться обновление настроек отправки документов ЭДО на новый формат УПД 5.03 — для этого есть формирование XML-файла УПД по формату 5.03.

Реализация массовой отправки и подписание

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

Разберем подробнее варианты автоматического подписания:

Для автоматизации процесса отправки (после того как документы сформированы и подписаны) мы можем вызвать типовое регламентное задание ОтправкаИПолучениеЭлектронныхДокументов. Если же нам нужно протолкнуть конкретный пакет немедленно, используем следующий метод:


// Пример программного вызова обмена с оператором ЭДО
ПараметрыОбмена = ЭлектронноеВзаимодействие.ПараметрыОтправкиЭлектронныхДокументов();
ПараметрыОбмена.ВыполнитьОтправку = Истина;
ЭлектронноеВзаимодействие.ВыполнитьОбмен(ПараметрыОбмена);

Проверка состояния и исключение дублей

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

Перед формированием нового документа обязательно выполним проверку:


СостояниеДокумента = ЭлектронныеДокументыПередача.СостояниеЭлектронногоДокумента(СсылкаНаОбъект);
Если СостояниеДокумента = Перечисления.СостоянияПоОбъектамУчетаЭДО.Сформирован
   ИЛИ СостояниеДокумента = Перечисления.СостоянияПоОбъектамУчетаЭДО.Подписан Тогда
    // Документ уже в процессе, повторно создавать не нужно
    Возврат;
КонецЕсли;

Использование внешних модулей (Диадок, СБИС)

Если ваша компания использует внешние модули от операторов, а не встроенный сервис 1С-ЭДО, подход будет отличаться. Рассмотрим работу с модулем Диадок. Он обычно предоставляет набор методов через внешнюю обработку или COM-интерфейс, также возможна отправка УПД через API напрямую.

Для массовой обработки в Диадоке часто используется метод CreatePackage. Основное преимущество внешних модулей — наличие готовых "оберток", которые позволяют одной командой превратить документ 1С в электронный пакет. Однако помните, что при использовании внешних модулей вы становитесь зависимы от обновлений разработчика модуля, в то время как механизмы БЭД обновляются вместе с конфигурацией 1С.

В случае со СБИС, автоматизация массовой отправки часто требует настройки "СБИС Плагина" на стороне сервера или использования API-интеграции. Большинство функций СБИС в 1С вызываются через экспортные методы их обработки, например, ВыполнитьКоманду.

Резюме и практические советы

Подводя итог, наиболее стабильный путь реализации программного ЭДО в БП КОРП выглядит так:

  1. Использовать встроенные функции Библиотеки электронных документов.
  2. Внедрить облачное подписание (DSS), чтобы исключить необходимость физических токенов на сервере.
  3. Обязательно проверять НастройкиЭДО (принятые приглашения) через метод ПроверитьВозможностьОтправкиЭлектронногоДокумента перед стартом массовой рассылки.
  4. Логировать результаты каждой отправки в отдельный журнал, чтобы оперативно реагировать на ошибки форматно-логического контроля (ФЛК), которые могут возникнуть на стороне оператора.

Рассмотренные инструменты позволяют полностью автоматизировать цикл документооборота — от нажатия кнопки "Провести" в реализации до получения статуса "Принят" от контрагента, превращая рутинную работу бухгалтера в полностью прозрачный технологический процесс.

← На главную