Подписание и отправка документов
При отправке документов необходим сам отправляемый документ(электронный документ, к примеру УПД в формате .xml) на который дополнительно формируется файл описания (.xml), содержащий указания для АРМ о том, где находится отправляемый документ и некоторую другую информацию, позволяющую АРМ выполнить подписание и отправку документа.
Последовательность при отправке:
- Внутренняя ИС (далее просто ИС), например, 1С или SAP формируем отправляемый документ, сохраняет его.
- Далее ИС создаёт файл описания (пример XML- файла описания можно найти здесь) с расширением .CF1 в папке указанной в настройках АРМ ("Настройки\Папки обмена\Папка для мониторинга файлов описания .CF1"), указав в файле описания, среди прочего, путь по которому был сохранён отправляемый документ.
- АРМ проверяет наличие новых файлов описаний (в указанной выше папке).
- При обнаружении новых файлов описания к полному имени обнаруженного файла описания добавляется расширение .work (файл в процессе обработки)
- После окончания обработки (АРМ выполнил проверку, подписание и отправку документов указанных в файле описания) к изначальному имени файла описания добавляется .ok (в итоге будет *.CF1.ok)
- ИС периодически проверяет наличие ответных файлов (*.CF1.ok) от АРМ и анализировать результаты (атрибуты resultcode и resultmsg) для каждой записи в файле описания. И по необходимости реагировать
- Если сам файл описания некорректен, например, нет описания важных полей, файл описания переименовывается так, что к имени файла добавляется .err (*.CF1.err)
Получение документов.
АРМ выполняет периодический опрос сервера оператора ЭДО на наличие новых документов и при их наличии получает с сервера документы, электронные подписи, производит расшифровку документов (XML, произвольные документы), проверку ЭП и сохраняет файл описания принятых файлов в папку обмена,
расширение файла: .CF2.
Обработка файлов описания в информационной системе организации.
Необходимо выполнять периодическую проверку наличия новых файлов CF2 в папке обмена.
При обработке файлов CF2 необходимо:
1) Прочитать необходимые для ИС атрибуты из файла CF2: id_author, id_recipient, filename, filesize, file_guid, file_address, file_address_sig, primedoctype, parent_type, parent_guid
2) Обработать файл, по пути указанному в атрибуте file_address: выполнить сохранение файла в базе данных или перенос файл в файловое хранилище
3) Проверить наличие подписи по заполненному атрибуту file_address_sig,
выполнить сохранение файла подписи в базу или перенос файла подписи в файловое хранилище.
4) Если атрибут file_address_sig не заполнен, файл подписи может быть получен позже, отдельным файлом CF2. Это зависит от типа документооборота.
При поступлении файла подписи отдельно: необходимо найти по parent_guid исходный документ, к которому относится файл подписи и выполнить привязку подписи к документу в базе ИС.
5) После успешной обработки файла CF2 - файл можно удалить или перенести во временное хранилище ИС.
Описание формата xml-файлов с расширением CF1\CF2.
В таблице символом "+" отмечены обязательные к заполнению атрибуты .
Обязательно к заполнению | |||||||
Атрибут | Описание | Примечание | Тип | ТОРГ12 | АКТ | СчФ\ УПД\ УКД | Произвольные документы (doc\pdf\jpg) |
id_author | идентификатор отправителя (первые 3 символа: идентификатор Оператора) | должен совпадать с идентификатором пользователя, зарегистрированным в ЭДО | string [4-46] | + | |||
id_recipient | идентификатор получателя (первые 3 символа: идентификатор Оператора) | проверяется АРМ-ом по справочнику пользователей | string [4-46] | + | |||
primedoctype | тип первичного документа | допустимые типы перечислены в таблице можно не заполнять для формализированных документов | integer | + | |||
file_address | полный путь к файлу | возможно использование и сетевого расположения | string [4-250] | + | + | + | + |
file_address_cer | полный путь к файлу с сертификатом | если заполнено, АРМ выполняет сохранение сертификата в указанный файл, применимо только для CF1 -файлов. | |||||
file_address_sig | полный путь к файлу с электронной подписью | необходимы права на запись, | string[255] | ||||
id_doctype | тип документа по Приказу Министерства культуры РФ от 25 августа 2010 г. N 558 | [0..1003] можно не заполнять для формализированных документов | integer | ||||
file_name | имя файла для отображения в ИС, может не совпадать с именем в file_address | имя файла должно соответствовать требованиям | string [1-250] | + | |||
file_guid | уникальный идентификатор связанного файла в ИС, формируется на стороне клиента | 36 символов, подробнее | string [36] | + | |||
file_sha1 | 160-битный хеш по алгоритму sha-1, заполняется АРМ-ом | если уже заполнено - будет выполнена проверка | string [0,40] | ||||
file_size | размер файла в байтах, заполняется АРМ-ом | если уже заполнено - будет выполнена проверка | integer | ||||
parent_type | тип документа-родителя (primedoctype -родителя) | для связывания документов по принадлежности и подчинению | integer | + * | + * | + * | + |
parent_guid | уникальный идентификатор документа-родителя в ИС | идентификатор, с которым связывается file_guid для возможности ЭДО | string [0,36] | + * | + * | + * | + |
use_crypt | использовать шифрование файла | с использованием сертификатов автора и получателя | integer | ||||
use_sig | использовать подписание файла | подписание по умолчанию | integer | ||||
use_zip | использовать сжатие документа | устаревший атрибут | integer | ||||
resultmsg | текстовый результат выполнения операций | внешняя ИС должна проверить статус для указанного файла после обработки файла описания АРМ-ом. | string [0..5000] | ||||
resultcode | числовой код результата выполнения операций | внешняя ИС должна проверить статус для указанного файла после обработки файла описания | integer | ||||
dt_send | дата и время отправки на сервер (UTC) | Внимание: заполняется автоматически в АРМ | dateTime(ISO 8601) | ||||
doc_date | дата документа | для передачи данных между ИС о документах (PDF\XLS) | date | + * | |||
doc_number | номер документа | для передачи данных между ИС о документах (PDF\XLS) | string [0,50] | + * | |||
doc_sum | сумма документа | для передачи данных между ИС о документах (PDF\XLS), разделитель: точка, пример: 123.45 = 123 рубля 45 копеек | string [0,20] | + * | |||
Тип документа (primedoctype) - используется для предварительной идентификации документов в ИС и АРМ без чтения самого документа (XML) или
при невозможности автоматически определить тип документа (сканы документов)
Перечень типов документов (primedoctype) доступен по ссылке.