В процессе работы с электронным документооборотом (ЭДО) часто возникает вопрос: как именно система узнает, что контрагент подписал наш документ? Этот процесс называется получением «обратной» или «ответной» подписи. В этой статье мы подробно разберем внутреннюю архитектуру 1С:ЭДО, выясним, какие программные модули отвечают за этот процесс, и как настроить автоматическую проверку криптографии.
Когда мы отправляем исходящий документ (например, договор или акт), процесс не завершается в момент нажатия кнопки «Подписать и отправить». Юридически значимый электронный документооборот подразумевает двустороннее (или многостороннее) подписание. Обратная подпись — это файл электронной подписи, сформированный на стороне контрагента и переданный через оператора ЭДО обратно в нашу информационную базу. Без этой подписи документ в учете считается незавершенным, а его статус будет зафиксирован как «Ожидается подпись контрагента».
Рассмотрим ситуацию, когда документ уже отправлен. Нам необходимо, чтобы система регулярно «опрашивала» сервер оператора и, как только подпись появится, загружала её и меняла статус документа. Проанализируем, как это реализовано технически.
За автоматическое обновление данных в 1С:ЭДО отвечает регламентное задание. Выясним, какое именно задание инициирует сеанс связи. В большинстве современных конфигураций на базе БСП (Библиотеки стандартных подсистем) это задание называется «Обмен с контрагентами».
Разберем логику его работы. Процедура, которую оно запускает, обычно расположена в общем модуле ИнформационныйОбменЭДО. Основной точкой входа является метод:
// Пример упрощенной структуры вызова обмена
Процедура ВыполнитьОбменДанными(ПараметрыОбмена) Экспорт
// Инициализация параметров сессии с оператором
// Запрос новых сообщений (пакетов данных)
// Обработка полученных данных
КонецПроцедуры
Если пользователь нажимает кнопку «Отправить и получить» вручную, система вызывает тот же самый программный интерфейс, что и регламентное задание. Это обеспечивает единообразие обработки данных независимо от способа инициации обмена.
Процесс получения обратной подписи — это не просто скачивание файла, а сложная технологическая цепочка. Разберем её по шагам:
АрхивДанныхЭлектронныхДокументов.Если перед программистом стоит задача изменить логику или отладить процесс, нужно знать, в каких модулях сосредоточена основная работа. Проанализируем структуру Библиотеки Электронных Документов (БЭД):
1. Общий модуль ЭлектронныйДокументооборотСКонтрагентамиСлужебный: Здесь находится «мозг» системы. Процедуры этого модуля отвечают за логику обработки входящих транспортных сообщений и распределение их по объектам базы.
2. Общий модуль ИнформационныйОбменЭДО: В нем реализованы методы взаимодействия с серверами операторов. Если возникают ошибки на этапе авторизации или получения списка сообщений — проверять стоит именно его.
3. Регистры сведений: Данные о подписях хранятся в специализированных таблицах. Обратите внимание на регистры, связанные с хранением электронных подписей и результатов их проверки. Часто используется структура:
// Пример обращения к результатам проверки
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЭлектронныеПодписи.Объект,
| ЭлектронныеПодписи.СтатусПроверки
|ИЗ
| РегистрСведений.ЭлектронныеПодписи КАК ЭлектронныеПодписи
|ГДЕ
| ЭлектронныеПодписи.Объект = &Документ";
Просто получить файл подписи недостаточно. Программа должна убедиться, что подпись легитимна. Рассмотрим подробнее, как выполняется этот процесс:
Сразу после записи подписи в базу, 1С вызывает локальный криптопровайдер (например, ViPNet CSP или КриптоПро CSP). Выполняются следующие проверки:
Если хотя бы одна из этих проверок завершается с ошибкой, статус документа примет значение «Подпись неверна», несмотря на то, что файл физически был получен.
Важно помнить, что процесс обмена не считается завершенным сразу после получения подписи. По регламентам ЭДО, наша сторона должна подтвердить получение. Система автоматически формирует «Извещение о получении» (ИОП).
Рассмотрим ситуацию: если ваша 1С скачала подпись, но не отправила назад ИОП, то на стороне контрагента документ будет долго висеть в статусе «Ожидается подтверждение оператора/получателя». Поэтому крайне важно, чтобы регламентное задание по обмену работало стабильно и без перебоев.
Выясним причину, по которой подписи могут не обновляться:
Мы выяснили, что проверка обратной подписи в 1С:ЭДО — это комплексный автоматизированный процесс, управляемый регламентным заданием Обмен с контрагентами. Процесс включает в себя не только транспортную часть (скачивание данных), но и глубокую интеграцию с криптографическим ПО. Для глубокой настройки и отладки программисту следует ориентироваться на модули ЭлектронныйДокументооборотСКонтрагентамиСлужебный и ИнформационныйОбменЭДО, которые координируют работу всей подсистемы.