Подготовленные файлы документов (электронных списков в установленном Сбербанком формате) подписывают с использованием описанного программного продукта и далее отправляют по системе электронного документооборота в банк. Операция подписи документа не является сложной, но требует дополнительных действий в интерфейсе операционной системы посредством контекстного меню проводника, либо с применением командной строки.
Сами файлы, как правило, формируются из учетной программы, в обсуждаемом случае – 1С платформы 7.7 или 8.х, поэтому рассмотрим возможность интегрировать процедуру подписи, ее проверки в непосредственно в интерфейс приложения, сократив тем самым количество операций конечного пользователя.
Необходимо отметить, что ранние версии ПО Sbersign (до версии 5.1.6 ) не позволяют провести такую интеграцию. Узнать, какая версия программы используется у Вас, можно, открыв одно у из утилит в папке программы, н-р SignParam.exe. Версия видна вверху окна, в заголовке. Свежую версию пакета можно получить, например, обратившись в обслуживающее отделение Сбербанка, либо найти в Интернете. Данные для этой статьи получены с использованием версии 5.4.10.
Возможность интеграции предоставляют библиотеки программы, описанные в спецификации. Файлы WinSign.dll и SignExp.dll используются для интеграции с операционной системой.
Первый отвечает за подпись файла ЭЦП, а так же его шифрование и дешифрование. Каждой операции назначена соответствующая функция:
- SignFile - подпись файла;
- EncryptFile - шифрование файла;
- DecryptFil - дешифрование файла.
Файл SignExp.dll отвечает за проверку подписи и взаимодействие с MS Office,
Одна из его функций:
- CheckSignFile - отображает вкладку цифровой подписи свойств файла с информацией о подписи, либо сообщение, если файл не подписан.
Для использования этих функций в среде 1с Предприятия можно использовать процедуру 1с ЗапуститьПриложение(). Использование процедуры совершенно одинаково как для платформы 1с 77 так и для платформы 8.х. Для реализации в диалоге формы можно разместить кнопки, вызывающие соответствующие процедуры:
Пусть переменная ФП содержит имя обрабатываемого файла
ФП = "xxxxxxxx.xxx"
Тогда вызов процедуры с соответствующими параметрами:
Вызывает на экран окно с запросом пароля для подписи файла ЗапуститьПриложение("rundll32.exe C:\SberSign\WinSign.dll,SignFile "+ФП);
Вызывает на экран окно шифрования файла
ЗапуститьПриложение("rundll32.exe C:\SberSign\WinSign.dll,EncryptFile "+ФП);
Вызывает на экран окно дешифрования файла
ЗапуститьПриложение("rundll32.exe C:\SberSign\WinSign.dll,DecryptFile x"+ФП);
Вызывает на экран вкладку "цифровая подпись" окна свойств для файла
ЗапуститьПриложение("rundll32.exe C:\SberSign\SignExp.dll,CheckSignFile "+ФП);