Войти

Использование вложений в Адаптере

В СМЭВ реализована возможность отправки вложений двумя способами: МТОМ и через файловое хранилище (ФХ). Принципиальное отличие заключается в том, что при передаче МТОМ вложение отправляется в самом конверте. А при передаче через ФХ отдельно от СМЭВ документа.

При этом требования к размеру вложения разные. Для МТОМ ограничение составляет 5МБ. Если вложение имеет размер более 5МБ, тогда необходимо использовать его передачу через ФХ. Предельный размер файла, переданного через ФХ по ftp ограничивается лимитом на использование ФХ – стандартно 1ГБ.

 

Использование метода МТОМ в ИУА

В случае, если выбирается метод передачи вложений в СМЭВ документе, т.е. МТОМ, необходимо добавить ссылку на файл в блок заголовков //AttachmentHeaderList. Ниже представлен пример элемента:

<typ:AttachmentHeaderList>

<typ:AttachmentHeader>
<typ:filePath>C:\Users\Adm\Documents\Наименование_файла.xml</typ:filePath>
</typ:AttachmentHeader>
</typ:AttachmentHeaderList>

Стоит обратить внимание, что директория размещения файла указывается в элементе.

Перед отправкой СМЭВ конверт будет преобразован, вложение и сообщение будут подписаны ЭП, и элемент будет выглядеть следующим образом:

<AttachmentHeaderList>

<AttachmentHeader>
<contentId>Наименование_файла.xml</contentId>
<MimeType>image/xml</MimeType>
<SignaturePKCS7>Подпись</SignaturePKCS7>
</AttachmentHeader>
</AttachmentHeaderList>

Где      contentId – Идентификатор (наименование) вложения;

            MimeType - тип передаваемого файла согласно RFC 2045, RFC 2046, RFC 4288, RFC 4289 и RFC 4855;

            SignaturePKCS7 – подпись вложения.

Помимо блока заголовков будет добавлен блок содержимого вложений (AttachmentContentList), передаваемых МТОМ:

<AttachmentContentList>

<AttachmentContent>
<Id>Наименование_файла.xml</Id>
<Content>
<xop:Include href="Наименование_файла.xml" xmlns:xop="http://www.w3.org/2004/08/xop/include&amp;amp;quot;/&amp;amp;gt;
</Content>
</AttachmentContent>
</AttachmentContentList>

Где       ID – идентификатор вложения, соответствующий фактическому Id вложения (Content-Id);

            Content - содержимое файла в формате Base64.

Для всех используемых вариантов интерфейса Адаптера достаточно добавить элемент AttachmentHeaderList в формируемый конверт. Исключение составляет только передача через встроенный интерфейс, где внесение данных осуществляется в специальных разделах интернет-браузера. И необходимости в самостоятельном формировании xml конвертов нет.

О том, как отправлять сообщения в каждом из интерфейсов подробнее описано в соответствующих статьях раздела «Интерфейсы Адаптера».

 

Использование передачи вложений через ФХ в ИУА

При передаче файлов более 5МБ через ИУА блок с заголовками вложений может выглядеть так же, как и в случае использования МТОМ, т.е. так:

<typ:AttachmentHeaderList>

<typ:AttachmentHeader>
<typ:filePath>C:\Users\Adm\Documents\Документ.docx</typ:filePath>
</typ:AttachmentHeader>
</typ:AttachmentHeaderList>


Таким образом, проделывать отдельные шаги под разные методы нет необходимости. Адаптер определит по размеру, какой метод использовать, и преобразует сформированный блок с заголовками в соответствии с требованиями СМЭВ. Для нашего примера он будет выглядеть следующим образом:

<RefAttachmentHeaderList>

<RefAttachmentHeader>
<uuid>03b868af-c032-4c37-8b8e-af3cc767ef25</uuid>
<Hash>PW8KVGn+LIKDTQ5yQRG4BfszZ4UUivgcAZraENUd94w=</Hash>
<MimeType>application/vnd.openxmlformats-officedocument.wordprocessingml.document</MimeType>
<SignaturePKCS7>подпись</SignaturePKCS7>
</RefAttachmentHeader>
</RefAttachmentHeaderList>

Где      uuid – уникальный идентификатор вложения, с которым оно будет размещено в ФХ;

            Hash – хэш-сумма переданного файла;

            MimeType – тип передаваемого файла согласно RFC 2045, RFC 2046, RFC 4288, RFC 4289 и RFC 4855;

            SignaturePKCS7 – подпись вложения.

При отправке конверта файл также будет размещен в ФХ. При успешном прохождении проверок СМЭВ добавит в конверт сообщения (GetRequestResponse поставщику или GetResponseResponse потребителю) учетные данные для доступа к ФХ.
Пример блока заголовков вложений в конверте получателя:

<sb3:FSAttachmentsList xmlns:sb3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.3">

<sb3:FSAttachment xmlns:sb3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.3">
<sb3:uuid>03b868af-c032-4c37-8b8e-af3cc767ef25</sb3:uuid>
<sb3:UserName>533EYpTgYDOIybkilsQ6rtuefhjZRI</sb3:UserName>
<sb3:Password>cKsCdWez5S4KF7tEFB0Qylpj9i0nT4</sb3:Password>
<sb3:FileName>/Документ.docx /sb3:FileName>
</sb3:FSAttachment>
</sb3:FSAttachmentsList>

Стоит отметить, что в одном сообщении можно передать несколько вложений. И если в случае МТОМ количество ограничивается размером СМЭВ документа, то в случае передачи через ФХ допустимый лимит – 150 вложений. В случае превышения допустимого количества участнику будет отправлено синхронное уведомление с текстом «SMEV-200: Количество ФТП-вложений превышает допустимое».

Общая структура заголовков обоих методов представлена на рисунке 1 на примере запроса. Подробное описание используемых элементов представлено в Методических рекомендациях по работе со СМЭВ 3.

структура сообщения-запроса.png

Рисунок 1 - Структура сообщения-запроса, переданного ИС в СМЭВ.

Авторизуйтесь, чтобы оставить комментарий к статье