Как реализовать автоматическое подписание документов ЭДО в 1С

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

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

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

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

Вариант 1: Техническая реализация на стороне сервера

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

  1. Настройка криптопровайдера на сервере: На сервере 1С:Предприятия должен быть установлен криптопровайдер (например, CryptoPro CSP или ViPNet CSP). Важно, чтобы лицензия позволяла работать в серверном режиме.
  2. Установка сертификата: Сертификат электронной подписи должен быть установлен в хранилище «Личное» того пользователя операционной системы, под которым запущена служба 1С (по умолчанию это usr1cv8). Это критически важный момент, так как серверное фоновое задание не увидит сертификаты, установленные в профиле администратора или текущего пользователя.
  3. Доработка программного кода: Нам необходимо создать регламентное задание, которое будет анализировать документы с признаком «К подписи». Для реализации подписания на сервере используются объекты библиотеки CADESCom.

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


// Пример упрощенной логики программного подписания на сервере
Процедура ПодписатьДокументНаСервере(ДанныеДляПодписи, СертификатОбъект)
    
    // Инициализация объекта криптографии
    КриптоМенеджер = Новый КриптографияМенеджер("", "", 75); // Код провайдера CryptoPro
    
    // Поиск сертификата в хранилище сервера
    Сертификат = НайтиСертификатНаСервере(СертификатОбъект.Отпечаток);
    
    Если Сертификат <> Неопределено Тогда
        Попытка
            // Наложение подписи
            РезультатПодписи = КриптоМенеджер.Подписать(ДанныеДляПодписи, Сертификат);
            // Дальнейшая логика отправки через API оператора ЭДО
        Исключение
            ЗаписьЖурналаРегистрации("ЭДО.ОшибкаПодписи", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
КонецПроцедуры

Вариант 2: Использование МЧД и индивидуальных подписей сотрудников

С точки зрения информационной безопасности и юридической чистоты, схема «Робот подписывает сертификатом директора» является рискованной. В случае судебных разбирательств директору будет сложно доказать, что он не видел конкретный документ на 100 миллионов рублей. Рассмотрим современный альтернативный подход, который стал стандартом в 2024 году.

Вместо использования одной «директорской» подписи на сервере, мы можем выдать менеджерам личные подписи физических лиц — для этого подойдёт интеграция 1С с системой Госключ. В 1С настраивается использование Машиночитаемых доверенностей (МЧД). Процесс выглядит так:

  1. Директор один раз подписывает МЧД для менеджера, делегируя ему право подписи первичных документов (УПД, акты).
  2. Менеджер подписывает документ в 1С своей личной подписью — удобно через модуль подписания документов через смартфон и Госключ.
  3. Система ЭДО автоматически прикрепляет файл МЧД к пакету документов.

Это решает проблему «бедного директора» и снимает с него ответственность за каждую отдельную отгрузку, перекладывая её на реального исполнителя.

Вариант 3: Использование внешних коннекторов и готовых решений

Если вы используете такие системы как СБИС (Sbis.Connect) или Контур.Диадок, стоит обратить внимание на их внешние интеграционные модули — для этого подойдёт интеграция 1С с ЭДО Saby для автоматизации. Например, СБИС.Коннект позволяет настроить мониторинг определенной папки или таблицы базы данных. Как только документ появляется в очереди, коннектор, запущенный как служба, подписывает его и отправляет в сеть ЭДО. Это позволяет избежать глубокой кастомизации кода самой 1С и проблем с обновлением конфигурации.

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

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

Выводы и рекомендации

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

← На главную