Автоматическая подпись электронных документов
Формируемые в системе ЭДО документы в частности УПД (Счф, СчфДоп) зачастую требуется подписывать электронной подписью. Для этого есть три пути:
1. Подпись на WEB панели провайдера (формируемые в Фабиусе УПД попадают как правило в раздел "Черновики"), как правило есть возможность выделить несколько УПД сразу и подписать скопом.
2. С помощью приложения провайдера EDIConnector и его аналоги. (В этом случае провайдер как правило сам выполняет настройки программы)
3. С помощью установленной программы "криптопро", используя ее вызов для подписи из командной строки.
Поподробнее опишем третий вариант (Речь идет как правило о случае, когда Фабиус выполняет роль не только выгрузки в папку xml-файлов но и транспорта (выкладывает созданные файлы на FTP):
На компьютере, на котором выполняется автоматическое (при печати комплекта документов), или ручное (по Ctrl+F10 в счетах фактурах) необходимо установить программу криптопро, закрытый ключ для нее и сертификат подписи ЭКЗ. (Как правило, если на этом компьютере выполняется подпись документов на WEB панели - ничего делать не требуется)
Важно, с одним идентификатором (email) должен быть один действующий сертификат. Все устаревшие над удалить. Иначе, криптопро будет выкатывать список, с просьбой выбрать - чем подписывать!
Если вы используете стандартную схему 340 в справочнике шаблонов импорта экспорта, для отправки УПД - достаточно включить в разделе "блок кода завершения обработки" флаг needSign:=true на 22 строке и указать email держателя сертификата на строке 29
Если нет, то можно взять схему 340 как пример в справочнике шаблонов импорта экспорта, раздел "блок кода завершения обработки" строки 22-58.
Важное дополнение: Схема 340 настроена на провайдера exite (e-com). У них требование, чтобы файл подписи начинался с 6_имяИсходногоФайла (где 6 это номер тега область полномочий из оригинального файла), и имел расширение "bin". Потом оба файла, исходный и подпись, надо упаковать в zip архив с именем исходного файла и потом выложить на ftp. Требования других провайдеров могут отличаться, поэтому может возникнуть необходимость небольших изменений кода схемы.
На случай, если надо будет создать bat-файл:
Чтобы сформировать файл подписи для документа, достаточно вставить в bat файл (или выполнить напрямую в CMD) строку:
csptest -sfsign -sign -in docFileName -out signFileName -my "i.ivanov@mail.ru" -add
где:
csptest - утилита подписи из командной строки, как правило лежит в "c:\Program Files (x86)\Crypto Pro\CSP\"
docFileName - имя файла документа с полным путем
signFileName - желаемое имя файла подписи с полным путем
my - хранилище сертификатов в данном случае локального пользователя (личные)
i.ivanov@mail.ru - доп имя сертификата для подписи. (можно посмотреть консоль mmc, или certmgr.msc -> сертификаты->по пользователю->личные ->сертификат->состав->дополнительное имя субъекта (email)
-add флаг включения самого сертификата в подпись. Без этого флага файл подписи валидацию, например на госуслугах не пройдет, поэтому рекомендуется всегда включать