Отправка сообщения с документом
Обмен документами между контрагентами происходит внутри сообщения. Подробнее механизм работы с сообщением описан на странице Обмен документами в Диадоке.
XSD-схемы служебных документов приведены в разделе XSD-схемы.
Отправка документа
Подписать и отправить документ в исходящем сообщении можно с помощью метода PostMessage (V3).
В теле запроса метода нужно передать структуру MessageToPost. Структура должна содержать идентификаторы ящиков участников документооборота и набор отправляемых документов:
FromBoxId
— идентификатор ящика отправителя. Можно указать только тот ящик, к которому у пользователя есть доступ с текущим авторизационным токеном.
ToBoxId
— идентификатор ящика получателя.
DocumentAttachment
— вложенная структура DocumentAttachment для передачи XML-файла документа:
SignedContent.Content
— XML-файл документа.
SignedContent.Signature
— файл подписи.
NeedRecipientSignature
— запрос извещения о получении документа получателем; если имеет значениеtrue
, то получатель документа будет обязан сформировать и отправить ИоП после получения документа Возможность запросить извещение о получении зависит от вида документооборота.
TypeNamedId
— тип документа.
Function
— функция документа.
Version
— версия документа.
SignedContent.PowerOfAttorneyToPost
— машиночитаемая доверенность (МЧД). Указать ее можно следующими способами:
указать регистрационный номер МЧД в формате GUID и ИНН доверителя во вложенной структуре
PowerOfAttorneyToPost.PowerOfAttorneyFullId
в поляхRegistrationNumber
иIssuerInn
соответственно,использовать признак
PowerOfAttorneyToPost.UseDefault = true
, если у сотрудника установлена МЧД по умолчанию;передать файл доверенности и подпись к ней во вложенной структуре
PowerOfAttorneyToPost.Contents
; файл передается в полеContent
, подпись — в полеSignature
.
Примечание
Обратите внимание, что API Диадока не создает файл подписи, его нужно сгенерировать самостоятельно.
Пример тела запроса метода PostMessage:
{
"FromBoxId": "{{boxId_sender}}",
"ToBoxId": "{{boxId_recipient}}",
"DocumentAttachments": [
{
"SignedContent":
{
"Content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0...NC50Ls+", // содержимое XML-файла в кодировке base-64
"Signature": "MIIN5QYJKoZIhvcNAQcCoIIN1jCCDdIA...kA9MJfsplqgW", // содержимое файла подписи в кодировке base-64
{
"PowerOfAttorney":
"FullId":
{
"RegistrationNumber": "{{registrationNumber}}",
"IssuerInn": "{{issuerInn}}"
},
},
},
"TypeNamedId": "{{documentTypeName}}",
"Function": "{{function}}",
"Version": "{{version}}"
}
]
}
В ответе метод вернет отправленное сообщение в виде структуры Message.
После вызова метода PostMessage
в ящике отправителя формируется:
цепочка документооборота и информация о связанных с ней документах,
событие о появлении сообщения.
В ящике получателя эта информация появится с некоторой задержкой: это связано с асинхронной передачей информации из ящика отправителя в ящик получателя. То есть успешный вызов метода PostMessage (V3) гарантирует лишь появление исходящего сообщения в ящике отправителя.
Не отправляйте формализованные документы размером более 3 Мб. Это может увеличить время обработки документа и завершиться ошибкой.
Для отправляемых документов размером более 500 Кб рекомендуем использовать полку документов.
Отложенная отправка
Когда нужно сохранить исходящий документ без отправки, чтобы подписать и отправить его позже, используйте отложенную отправку. Это может быть полезно, если:
документы перед отправкой нужно согласовать с другими сотрудниками;
документ перед отправкой нужно дополнить данными, как в случае с маркированными товарами;
когда документ был создан с помощью интеграционного решения, а подпись и отправка будет осуществляться из веб-сервиса.
Для отложенной отправки в структуре MessageToPost установите признак DelaySend
. При вызове метода PostMessage (V3) документ с этим признаком будет сохранен в разделе исходящих документов. Такой документ называется исходящим неотправленным документом.
Если вы планируете перед отправкой отредактировать документ, используйте настройки редактирования. Для этого в поле MessageToPost.DocumentAttachment.EditingSettingId
укажите значение идентификатора настройки редактирования, полученного у вашего менеджера.
Чтобы согласовать исходящий неотправленный документ, используйте метод PostMessagePatch (V3) или PostMessagePatch (V4). Исходящий неотправленный документ можно подписать несколькими согласующими подписями.
Если никаких действий с документом больше не требуется, его можно подписать и отправить с помощью метода PostMessagePatch (V3) или PostMessagePatch (V4). Подписание неотправленного документа основной подписью равносильно его отправке.
Исходящий неотправленный документ можно найти с помощью метода GetDocuments (V3). Для этого в запросе используйте фильтр DocumentStatus = WaitingForSenderSignature
.
У исходящего неотправленного документа есть ограничения:
под таким документом не может быть подписи или запроса на подпись по доверенности,
нельзя изменить содержимое документа и реквизиты получателя, за исключением документов с настройками редактирования.
Отличия исходящего неотправленного документа от других сущностей приведено в таблице.
Создание черновика
Метод PostMessage (V3) можно использовать для создания черновиков — сообщений, содержащих документы без подписей к ним.
Чтобы создать черновик, укажите признак IsDraft
в структуре MessageToPost при создании сообщения. Такое сообщение будет загружено на сервер, но задание на отправку сообщения получателю формироваться не будет.
Для формирования подписей к документам и отправки сообщения на основе черновика используйте метод SendDraft.
Шаблон, черновик или неотправленный документ
Используйте шаблон, черновик или исходящий неотправленный документ в подходящих для этого сценариях. Ниже в таблице приведены различия этих сущностей.
Шаблон |
Черновик |
Исходящий неотправленный документ |
|
---|---|---|---|
Свойства |
Сообщение без подписей. На его основе можно создать один или несколько документов — в зависимости от настроек. С шаблоном можно работать в своем ящике или отправить контрагенту. |
«Заготовка» документа, т.е. сущность, на основе которой можно создать один документ. |
Уже готовый к отправке документ, сохраненный в разделе «Исходящие». Имеет статус «Требуется подписать и отправить». |
Где хранится |
в ящике отправителя или получателя |
в ящике отправителя |
в ящике отправителя |
Можно ли редактировать перед отправкой |
да, если указаны настройки редактирования |
нет |
да, если указаны настройки редактирования |
Что будет после отправки |
в зависимости от настроек:
|
черновик будет удален |
будет отправлен контрагенту |