Как в 1С:ЭДО реализована проверка и получение обратной подписи?

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

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

Что такое обратная подпись и зачем она нужна

Когда мы отправляем исходящий документ (например, договор или акт), процесс не завершается в момент нажатия кнопки «Подписать и отправить». Юридически значимый электронный документооборот подразумевает двустороннее (или многостороннее) подписание. Обратная подпись — это файл электронной подписи, сформированный на стороне контрагента и переданный через оператора ЭДО обратно в нашу информационную базу. Без этой подписи документ в учете считается незавершенным, а его статус будет зафиксирован как «Ожидается подпись контрагента».

Рассмотрим ситуацию, когда документ уже отправлен. Нам необходимо, чтобы система регулярно «опрашивала» сервер оператора и, как только подпись появится, загружала её и меняла статус документа. Проанализируем, как это реализовано технически.

Регламентные задания: сердце автоматизации

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

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


// Пример упрощенной структуры вызова обмена
Процедура ВыполнитьОбменДанными(ПараметрыОбмена) Экспорт
    // Инициализация параметров сессии с оператором
    // Запрос новых сообщений (пакетов данных)
    // Обработка полученных данных
КонецПроцедуры

Если пользователь нажимает кнопку «Отправить и получить» вручную, система вызывает тот же самый программный интерфейс, что и регламентное задание. Это обеспечивает единообразие обработки данных независимо от способа инициации обмена.

Технический цикл получения данных

Процесс получения обратной подписи — это не просто скачивание файла, а сложная технологическая цепочка. Разберем её по шагам:

  1. Запрос событий: 1С обращается к API оператора ЭДО (например, Калуга Астрал, Тензор, Такском) и запрашивает список новых «событий», произошедших с момента последнего обмена.
  2. Загрузка пакета: Если оператор сообщает, что для нас есть подписанный документ, система скачивает транспортный контейнер (обычно это зашифрованный ZIP-архив или XML-пакет).
  3. Дешифрование и парсинг: Модуль криптографии расшифровывает пакет, после чего программные модули ЭДО начинают разбирать его содержимое.
  4. Идентификация владельца: Это критически важный момент. Система считывает уникальный идентификатор документа (GUID) из пришедшего пакета и ищет его в нашей базе данных в справочнике или регистре «Электронные документы».
  5. Сопоставление: Как только соответствие найдено, файл подписи извлекается и записывается в регистр сведений АрхивДанныхЭлектронныхДокументов.

Где искать код обработки в конфигураторе

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

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

2. Общий модуль ИнформационныйОбменЭДО: В нем реализованы методы взаимодействия с серверами операторов. Если возникают ошибки на этапе авторизации или получения списка сообщений — проверять стоит именно его.

3. Регистры сведений: Данные о подписях хранятся в специализированных таблицах. Обратите внимание на регистры, связанные с хранением электронных подписей и результатов их проверки. Часто используется структура:


// Пример обращения к результатам проверки
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ЭлектронныеПодписи.Объект,
    |	ЭлектронныеПодписи.СтатусПроверки
    |ИЗ
    |	РегистрСведений.ЭлектронныеПодписи КАК ЭлектронныеПодписи
    |ГДЕ
    |	ЭлектронныеПодписи.Объект = &Документ";

Автоматическая проверка криптографии

Просто получить файл подписи недостаточно. Программа должна убедиться, что подпись легитимна. Рассмотрим подробнее, как выполняется этот процесс:

Сразу после записи подписи в базу, 1С вызывает локальный криптопровайдер (например, ViPNet CSP или КриптоПро CSP). Выполняются следующие проверки:

Если хотя бы одна из этих проверок завершается с ошибкой, статус документа примет значение «Подпись неверна», несмотря на то, что файл физически был получен.

Технологические квитанции: завершение цикла

Важно помнить, что процесс обмена не считается завершенным сразу после получения подписи. По регламентам ЭДО, наша сторона должна подтвердить получение. Система автоматически формирует «Извещение о получении» (ИОП).

Рассмотрим ситуацию: если ваша 1С скачала подпись, но не отправила назад ИОП, то на стороне контрагента документ будет долго висеть в статусе «Ожидается подтверждение оператора/получателя». Поэтому крайне важно, чтобы регламентное задание по обмену работало стабильно и без перебоев.

Выясним причину, по которой подписи могут не обновляться:

  1. Заблокирован сеанс регламентного задания.
  2. Истек срок действия сертификата, которым подписываются технологические квитанции.
  3. Проблемы на стороне оператора (задержка формирования пакетов).

Итоги

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

← На главную