Задача [EDI1]: Возможность экспорта документов

Формулировка проблемы:

Задача проходит в рамках реализации прототипа системы EDI на базе платформы ARTA Synergy.

Необходимо иметь возможность осуществлять экспорт документов ARTA Synergy вместе с электронными подписями. Основные варианты использования:

  1. Проверка целостности документа и валидности подписей на нём

  2. Манипуляция файлами документов (просмотр, модификация, передача и т.д.) без использования ARTA Synergy.

Используется: Конфигуратор, модуль «Хранилище» -> «Документы».

Решение:

Необходимо реализовать функцию экспорта документов в виде архива, содержащего файлы документа, подписи (в т.ч. ЭЦП), а также необходимую для вышеуказанных вариантов использования информацию о документе.

Функция является необязательной и активируется в Конфигураторе, раздел «Документооборот» -> «Настройки документооборота». Название опции: «Разрешить экспорт документов», отключена по умолчанию.

Рисунок 53. Настройка возможности экспорта документа

Настройка возможности экспорта документа

При активации этой опции экспортировать документ можно в разделах «Все», «Журналы» модуля «Хранилище» -> «Документы» и их подразделах при помощи контекстного меню документа:

Рисунок 54. Экспорт документа

Экспорт документа

Положение пункта контекстного меню «Экспортировать»:

Документ экспортируется в виде архива в формате 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, содержащий следующую информацию:

Примечание

Если в приложениях экспортируемого документа имеется файл с именем 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>