Формулировка проблемы:
Задача проходит в рамках реализации прототипа системы 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>