Отправка сообщения с документом
Обмен документами между контрагентами происходит внутри сообщения. Подробнее механизм работы с сообщением описан на странице Обмен документами в Диадоке.
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иRepresentativeInnсоответственно,использовать признак
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.
Шаблон, черновик или неотправленный документ
Используйте шаблон, черновик или исходящий неотправленный документ в подходящих для этого сценариях. Ниже в таблице приведены различия этих сущностей.
Шаблон |
Черновик |
Исходящий неотправленный документ |
|
|---|---|---|---|
Свойства |
Сообщение без подписей. На его основе можно создать один или несколько документов — в зависимости от настроек. С шаблоном можно работать в своем ящике или отправить контрагенту. |
«Заготовка» документа, т.е. сущность, на основе которой можно создать один документ. |
Уже готовый к отправке документ, сохраненный в разделе «Исходящие». Имеет статус «Требуется подписать и отправить». |
Где хранится |
в ящике отправителя или получателя |
в ящике отправителя |
в ящике отправителя |
Можно ли редактировать перед отправкой |
да, если указаны настройки редактирования |
нет |
да, если указаны настройки редактирования |
Что будет после отправки |
в зависимости от настроек:
|
черновик будет удален |
будет отправлен контрагенту |