Формулировка проблемы:
Задача проходит в рамках реализации прототипа системы EDI на базе платформы ARTA Synergy.
Необходимо иметь возможность осуществлять экспорт документов ARTA Synergy вместе с электронными подписями. Основные варианты использования:
Проверка целостности документа и валидности подписей на нём
Манипуляция файлами документов (просмотр, модификация, передача и т.д.) без использования ARTA Synergy.
Используется: Конфигуратор, модуль «Хранилище» -> «Документы».
Решение:
Необходимо реализовать функцию экспорта документов в виде архива, содержащего файлы документа, подписи (в т.ч. ЭЦП), а также необходимую для вышеуказанных вариантов использования информацию о документе.
Функция является необязательной и активируется в Конфигураторе, раздел «Документооборот» -> «Настройки документооборота». Название опции: «Разрешить экспорт документов», отключена по умолчанию.
При активации этой опции экспортировать документ можно в разделах «Все», «Журналы» модуля «Хранилище» -> «Документы» и их подразделах при помощи контекстного меню документа:
Положение пункта контекстного меню «Экспортировать»:
В «Журналах» - после пункта «Списать...»
Во «Всех» - последним пунктом
Документ экспортируется в виде архива в формате
7z. Имя
результируещего архива формируется из краткого содержания документа,
транслитерируется и дополняется расширением .7z
,
например:
Sluzhebnaya zapiska o komandirovanii.7z
Архив заполняется содержимым следующим образом:
Sluzhebnaya zapiska o komandirovanii.7z | - Служебная записка о командировании | -- synergy-document-metadata/ | --- metadata.xml | -- файл-из-приложений-документа-1 | -- файл-из-приложений-документа-2 | -- ...
В корень архива помещается каталог c именем, полученным из краткого содержания документа, если таковое имеется. В случае, если краткое содержание пусто, именем каталога становится идентификатор документа.
Примечание:
Имена файлов и каталогов длиннее 100 символов автоматически укорачиваются до этого лимита
В этот каталог помещаются файлы документа из раздела «Приложения» с
оригинальными именами и расширениями, а также каталог
synergy-document-metadata
, в котором находится
файл metadata.xml
, содержащий следующую
информацию:
Версия формата экспортируемого документа. Описываемый в данной
задаче формат имеет версию 1
.
Дата экспорта
Идентификатор документа в ARTA Synergy
Идентификатор данных по форме, соответствующих документу (может отсутствовать, если документ не является документом реестра)
Данные карточки документа:
Номер
Краткое содержание
Дата регистрации
Номер исходящего
Дата исходящего
Длительность
Признак «Контрольный»
Признак «Бракованный»
Тип документа
Журнал
Дело
Корреспондент
Корреспондент-организация
Пользователь, зарегистрировавший документ
Пользователь - автор документа
Список файлов документа
Файлы по формам документа (в т.ч. по реестру, формы завершения «форма» и дополнительные (новые) карточки документа) - 0..N наборов из следующих атрибутов:
Имя файла по форме
Данные по форме (JSON)
Данные подписей документа - 0..N наборов из следующих атрибутов:
Пользователь - автор подписи
Идентификатор
Логин
Должность
Дата подписи
Подпись (в т.ч. ЭЦП)
Сертификат автора подписи (если имеется)
Примечание
Если в приложениях экспортируемого документа имеется файл с именем
synergy-document-metadata
без расширения, то при экспорте именем этого файла должно статьsynergy-document-metadata.file
, чтобы избежать конфликта с вышеописанным служебным каталогом
Пример файла метаданных metadata.xml
:
<?xml version="1.0" encoding="UTF-8"?> <documentMeta formatVersion="1" exportDate="2015-05-29 14:21:32" asfDataUUID="38392f22-c430-4bf7-999a-d110aaa353d2"> <note>Данный файл содержит служебную информацию.</note> <documentId>48a95244-3eda-408a-85a1-51ad73ecc266</documentId> <rcc> <number/> <subject>synegy 766</subject> <regDate/> <outNumber/> <outDate/> <length>1</length> <controlled>false</controlled> <defective>false</defective> <docTypeName/> <docTypeId/> <registerName/> <registerId/> <docFileId/> <correspondent/> <correspondentOrg/> <regUser/> <author>Фомин О.Е.</author> </rcc> <attachments> <attachment ioId="85ac00a7-b8cf-4361-87b2-33740894af7f">synegy 766.asfdocx</attachment> </attachments> <cards/> <forms> <form> <formFileName>synegy 766.asfdocx</formFileName> <formData>{"uuid":"38392f22-c430-4bf7-999a-d110aaa353d2", "version":5, "form":"1c5baf54-f951-413e-933a-a8bdfeb3e467", "formVersion":1, "modified":"2015-05-29 10:07:37.0", "nodeUUID":"00b5f39c-250a-44b8-8b3c-91de34b5dfc0", "data":[{"id":"cmp-014j1u","type":"label","label":"userID","value":" ","key":null,"valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"userID","type":"entity","label":null,"value":"Пупкин В. С.","key":"4de79a30-63ec-4eee-ab22-e9031d34eae9","valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"cmp-o1duwt","type":"label","label":"positionID","value":" ","key":null,"valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"positionID","type":"entity","label":null,"value":"synergy 528","key":"b8db4110-7755-4906-ab41-2453b14fad51","valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"cmp-enm6tx","type":"label","label":"data_1","value":" ","key":null,"valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"data_1","type":"textbox","label":null,"value":"111111111 Андреев ","key":null,"valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"cmp-3o4uak","type":"label","label":"data_2","value":" ","key":null,"valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null},{"id":"data_2","type":"textarea","label":null,"value":"111111111 1111111 Андреев Снабженец ","key":null,"valueID":null,"username":null,"userID":null,"values":null,"keys":null,"data":null}]}</formData> </form> </forms> <signs> <sign> <authorId>3df7c226-e5cc-4860-bff3-d4a843f29acb</authorId> <login>Белкач</login> <fullname>Белка Белка Белка</fullname> <positions> <position departmentName="Белки" positionName="Белка"/> <position departmentName="Белки" positionName="synergy 528"/> </positions> <signDate>2015-05-29 14:14:46</signDate> <signature>XS49l5pPW2Q1sqMZoZ5wT302cvo=</signature> <certificate>aGFzaA==</certificate> </sign> </signs> </documentMeta>