Работа со статусами документа

За свой жизненный цикл документ в Диадоке проходит через множество событий, например:

  • пользователь формирует или загружает документы в Диадок, согласовывает, подписывает и отправляет контрагенту,

  • контрагент подписывает документ или формирует ответный титул,

  • пользователь или его контрагент могут аннулировать документ,

  • контрагент может запросить исправление или корректировку,

  • оператор проверяет валидность подписей под документом.

Эти и другие события влияют на состояние документа.

Понять, в каком состоянии и на какой стадии обработки находится документ, можно с помощью статусов документа.

Для каждой стадии документооборота в Диадоке существуют свои статусы. Они зависят от того, какой этап проходит документ, выполнили ли ответственные сотрудники задачи по согласованию и подписанию, подписан ли документ контрагентом. Многие статусы парные, но с разных сторон отображаются по-разному: например, «Подписан» и «Подписан контрагентом».

Кроме этого возможны так называемые двойные статусы, которые одновременно отражают состояние документа по нескольким аспектам, например: «Отказано в подписи. Требуется подписать извещение» или «Требуется подпись. Отказано в аннулировании».

Кроме основных статусов жизненного цикла документа существуют и второстепенные статусы, которые отражают состояния, не влияющие на ход и завершенность документооборота: например, статусы согласования документа. Статусы согласования отображаются только в том ящике, в котором это согласование выполняется, и не видны другой стороне.

Примечание

Подробнее про статусы можно почитать в статье на сайте Диадока.

В Диадоке проводить операции с документом и отслеживать его статусы можно как с помощью интеграционных решений, так и в веб-интерфейсе.

Состояния документов

Основные состояния документа, которые можно отследить с помощью статусов:

  • Завершенность документооборота. Документооборот считается завершенным, если жизненный цикл документа закончен и никакие действия по нему больше не требуются:

    • под документом проставлены все необходимые подписи или отправлены извещения о получении,

    • контрагент отказал в подписи,

    • документ был исправлен или откорректирован: в этом случае документооборот первичного документа считается завершенным, а дальнейший документооборот ведется уже в рамках исправления или корректировки,

    • документ был аннулирован,

    • аннулирование по подписанному документу было запрошено, но контрагент отказал в аннулировании: в этом случае документ продолжает иметь юридическую силу.

  • Ожидание действий от участников документооборота:

    • требуется подписать и отправить документ: это возможно в случае, если документ сохранен как исходящий неотправленный,

    • требуется подпись или титул получателя,

    • требуется извещение о получении.

  • Уточнение документа:

    • контрагент запросил уточнение по документу: в этом случае от пользователя требуется отправить уточнение по документу — исправление или корректировку,

    • пользователь отправил на документ корректировку,

    • пользователь отправил на документ исправление.

  • Аннулирования документа:

    • документ аннулирован в одностороннем порядке: это возможно в случае, если пользователь отправил документ контрагенту в Диадоке, но этот документ еще не был обработан контрагентом,

    • запрошено аннулирование по документу: запрос на аннулирование требуется в случае, если документ уже был обработан контрагентом (подписан документ, отправлено извещение о получении) или если документ был отправлен в роуминг,

    • запрос на аннулирование одобрен,

    • запрос на аннулирование отклонен.

  • Согласование документа:

    • согласование запрошено,

    • согласовано,

    • в согласовании отказано.

В разделах ниже приведены таблицы с возможными статусами для односторонних и двусторонних документов. Узнать об особенностях документооборота можно с помощью информации о виде документооборота.

Структуры для определения статуса

В API Диадока статусы документа можно отследить двумя способами:

  • из данных структуры Document — если вы работаете с лентой событий по документам,

  • из данных структуры DocflowV3 — если вы работаете с Docflow.

Статусы в этих структурах идентичны, использование того или иного способа зависит только от подхода, выбранного для работы в интеграционном решении.

Ниже приведена таблица, в которой описаны поля со статусами документов в структурах Document и DocflowV3.

Где хранятся статусы

Поля структуры Document

Поля структуры DocflowV3

Титул отправителя

SenderSignatureStatus

SenderTitle

Ответ промежуточного получателя

ProxySignatureStatus

ProxyResponse

Ответ получателя

RecipientResponseStatus

RecipientResponse

ИоП получателя на документ

RecipientReceiptMetadata

RecipientReceipt

ИоП отправителя на документ

SenderReceiptMetadata

SenderReceipt

Аннулирование

RevocationStatus

Revocation

Уточнение

AmendmentRequestMetadata

AmendmentRequest

Согласование

ResolutionStatus

Resolution

Подтверждение оператора на документ

ConfirmationMetadata

Confirmation

Общий статус

DocflowStatus

DocflowStatus

Внешний документооборот

LastOuterDocflows

OuterDocflows

Роуминг

RoamingNotificationStatus

SenderTitle.RoamingNotification

Статусы внешнего документооборота для документов с маркированными и прослеживаемыми товарами описаны на страницах Документы с маркированными товарами и Документы с прослеживаемыми товарами соответственно.

У некоторых структур, отражающих статус документа в DocflowV3, есть признак IsFinished, который отражает завершенность документооборота каждой отдельной сущности: титула отправителя и получателя, извещения о получении, аннулирования, уточнения, согласования и подтверждения оператора. Вы можете использовать этот признак, чтобы определить, требуются ли еще какие-либо действия по документообороту этих сущностей.

Статусы односторонних документов

В этом разделе рассматриваются однотитульные документы без запроса подписи.

К таким документам относятся, например, УПД с функцией СЧФ, счета-фактуры и неформализованные документы без запроса ответной подписи.

В зависимости от вида документооборота существуют следующие особенности таких документов:

  • Ответным действием получателя для некоторых типов документов может считаться извещение о получении — например, для формализованных документов. Определить необходимость отправки извещения можно по свойству вида документооборота TitleReceiptBehavior для соответствующего участника — Sender, Recipient или Proxy. В случае необходимости отправки извещения документооборот будет считаться завершенным только после получении извещения.

  • Для некоторых видов документооборота существует возможность запросить уточнение (т.е. отправить уведомление об уточнении) и отправить уточнение. Определить возможность уточнения можно по свойству вида документооборота SupportsAmendmentRequest. Уточнение отправляется в виде КСФ/ИСФ или УКД/ИУПД соответственно.

Статусы однотитульных документов без запроса подписи

Статус у отправителя

Статус у получателя

Поля структуры Document

Поля структуры DocflowV3

Завершенный документооборот

Документооборот завершен

Документооборот завершен

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = None

  • RecipientReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = None (или отсутствует)

  • RecipientReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable (или отсутствует)

Аннулирован

Аннулирован

  • RevocationStatus = RevocationAccepted

  • Revocation.RevocationStatus = RevocationAccepted

Отказано в аннулировании

Отказано в аннулировании

  • RevocationStatus = RevocationRejected

  • Revocation.RevocationStatus = RevocationRejected

Исправлен

Исправлен

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = Revised

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = Revised

Откорректирован

Откорректирован

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = Corrected

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = Corrected

Требуется действие отправителя

Требуется подписать и отправить

  • SenderSignatureStatus = WaitingForSenderSignature

  • SenderTitleDocflow.SenderSignatureStatus = WaitingForSenderSignature

Ошибка в подписи

  • SenderSignatureStatus = SenderSignatureCheckedAndInvalid

  • SenderTitleDocflow.SenderSignatureStatus = SenderSignatureCheckedAndInvalid

Требуется аннулирование

Ожидается аннулирование

  • RevocationStatus = RequestsMyRevocation (для отправителя)

  • RevocationStatus = RevocationIsRequestedByMe (для получателя)

  • Revocation.RevocationStatus = RequestsMyRevocation (для отправителя)

  • Revocation.RevocationStatus = RevocationIsRequestedByMe (для получателя)

Требуется действие получателя

Ожидается извещение о получении

Требуется подписать извещение

  • RecipientReceiptMetadata.ReceiptStatus = WaitingForReceipt (для отправителя)

  • RecipientReceiptMetadata.ReceiptStatus = HaveToCreateReceipt (для получателя)

  • RecipientReceipt.Status = WaitingForReceipt (для отправителя)

  • RecipientReceipt.Status = HaveToCreateReceipt (для получателя)

Ожидается аннулирование

Требуется аннулирование

  • RevocationStatus = RevocationIsRequestedByMe (для отправителя)

  • RevocationStatus = RequestsMyRevocation (для получателя)

  • Revocation.RevocationStatus = RevocationIsRequestedByMe (для отправителя)

  • Revocation.RevocationStatus = RequestsMyRevocation (для получателя)

Согласование

Согласован

Согласован

  • ResolutionStatus.Type = Approved

  • Resolution.ResolutionStatus = Approved

На согласовании или подписании

На согласовании или подписании

  • ResolutionStatus.Type = ApprovementRequested

  • Resolution.ResolutionStatus = ApprovementRequested

Запрошена подпись

На подисании

  • ResolutionStatus.Type = SignatureRequested

  • Resolution.ResolutionStatus = ApprovementSignatureRequested

Отказано в согласовании

Отказано в согласовании

  • ResolutionStatus.Type = Disapproved

  • Resolution.ResolutionStatus = Disapproved

Отказано в запросе подписи

Отказано в запросе подписи

  • ResolutionStatus.Type = SignatureDenied

  • Resolution.ResolutionStatus = SignatureDenied

Другое

Подпись отправителя не проверена

  • SenderSignatureStatus = SenderSignatureUnchecked

  • SenderTitleDocflow.SenderSignatureStatus = SenderSignatureUnchecked

Подпись отправителя проверена и валидна

  • SenderSignatureStatus = SenderSignatureCheckedAndValid

  • SenderTitleDocflow.SenderSignatureStatus = SenderSignatureCheckedAndValid

Не прочитан

  • IsRead = false

  • IsRead = false

Статусы двусторонних документов

В этом разделе рассматриваются двухтитульные документы, а также однотитульные документы с запросом подписи или с обязательной подписью.

К таким документам относятся, например, УПД c функциями ДОП и СЧФДОП, акты, накладные и неформализованные документы с запросом ответной подписи.

В зависимости от вида документооборота существуют следующие особенности таких документов:

  • Ответное действие может представлять собой либо подпись под документом, либо сформированный титул получателя в формате XML-файла. Определить, какое действие требуется для документа, — подпись или ответный титул, — можно по свойству вида документооборота ParticipantAction для участника Recipient. Для простоты в таблице ниже оба этих действия называются подписью: для документов с ответным титулом под действием «Подписать» понимается необходимость сформировать и отправить ответный титул.

  • Для некоторых видов документооборота возможен запрос извещения о получении для одной или обеих сторон документооборота: в этом случае возможен двойной статус документа, когда помимо подписи от контрагента ожидается еще и извещение о получении. Определить возможность запроса извещения о получении на любой титул можно по свойству вида документооборота TitleReceiptBehavior для соответствующего участника — Sender, Recipient или Proxy.

  • Для некоторых видов документооборота существует возможность запросить уточнение (т.е. отправить уведомление об уточнении) и отправить уточнение. Определить возможность уточнения можно по свойству вида документооборота SupportsAmendmentRequest. Уточнение отправляется в виде УКД/ИУПД соответственно.

Особенности обработки документов:

  • Для документов с ответным титулом в формате XML-файла возможно формирование подписи с разногласиями — в этом случае получатель формирует ответный документ и в комментариях указывает разногласия.

  • Для документов с ответным титулом в формате XML-файла отказ от подписи можно передавать как сформированный титул получателя в формате XML-файла (код итога = 3) или как сформированный служебный документ с отказом в подписи.

  • Документооборот документов с ответным титулом в формате XML-файла считается завершенным только в случае, если извещение о получении на титул получателя либо не было запрошено, либо было получено.

Статусы двухтитульных документов и однотитульных документов с запросом подписи или с обязательной подписью

Статус у отправителя

Статус у получателя

Поля структуры Document

Поля структуры DocflowV3

Завершенный документооборот

Подписан контрагентом

Подписан

  • RecipientResponseStatus = WithRecipientSignature

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = None

  • RecipientReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • SenderReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • RecipientResponse.ResponseStatus = WithRecipientSignature

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = None (или отсутствует)

  • RecipientReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable

  • SenderReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable

Подписан с разногласиями контрагентом

Подписан с разногласиями

  • RecipientResponseStatus = WithRecipientPartiallySignature

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = None

  • RecipientReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • SenderReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • RecipientResponse.ResponseStatus = WithRecipientPartiallySignature

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = None (или отсутствует)

  • RecipientReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable

  • SenderReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable

Контрагент отказал в подписи

Отказано в подписи

  • RecipientResponseStatus = RecipientSignatureRequestRejected

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = None

  • RecipientReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • SenderReceiptMetadata.ReceiptStatus = Finished / GeneralReceiptStatusNotAcceptable

  • RecipientResponse.ResponseStatus = RecipientSignatureRequestRejected

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = None (или отсутствует)

  • RecipientReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable

  • SenderReceipt.Status = Finished / GeneralReceiptStatusNotAcceptable

Аннулирован

Аннулирован

  • RevocationStatus = RevocationAccepted

  • Revocation.RevocationStatus = RevocationAccepted

Отказано в аннулировании

Отказано в аннулировании

  • RevocationStatus = RevocationRejected

  • Revocation.RevocationStatus = RevocationRejected

Исправлен

Исправлен

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = Revised

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = Revised

Откорректирован

Откорректирован

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = Corrected

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = Corrected

Требуется действие отправителя

Требуется подписать и отправить

  • SenderSignatureStatus = WaitingForSenderSignature

  • SenderTitleDocflow.SenderSignatureStatus = WaitingForSenderSignature

Ошибка в подписи

  • SenderSignatureStatus = SenderSignatureCheckedAndInvalid

  • SenderTitleDocflow.SenderSignatureStatus = SenderSignatureCheckedAndInvalid

Требуется подписать извещение

Ожидается извещение о получении

  • SenderReceiptMetadata.ReceiptStatus = HaveToCreateReceipt (для отправителя)

  • SenderReceiptMetadata.ReceiptStatus = WaitingForReceipt (для получателя)

  • RevocationStatus <> RevocationAccepted

  • SenderReceipt.Status = HaveToCreateReceipt (для отправителя)

  • SenderReceipt.Status = WaitingForReceipt (для получателя)

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

Требуется уточнение

Ожидается уточнение

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = AmendmentRequested

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = AmendmentRequested

Требуется аннулирование

Ожидается аннулирование

  • RevocationStatus = RequestsMyRevocation (для отправителя)

  • RevocationStatus = RevocationIsRequestedByMe (для получателя)

  • Revocation.RevocationStatus = RequestsMyRevocation (для отправителя)

  • Revocation.RevocationStatus = RevocationIsRequestedByMe (для получателя)

Требуется действие получателя

Ожидается подпись контрагента

Требуется подпись

  • RecipientResponseStatus = WaitingForRecipientSignature

  • RevocationStatus <> RevocationAccepted

  • AmendmentRequestMetadata.AmendmentFlags = None

  • RecipientResponse.ResponseStatus = WaitingForRecipientSignature

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

  • AmendmentRequest.AmendmentFlags = None (или отсутствует)

Ожидается подпись контрагента

Ошибка в подписи

  • RecipientResponseStatus = InvalidRecipientSignature

  • RecipientResponse.ResponseStatus = InvalidRecipientSignature

Ожидается извещение о получении

Требуется подписать извещение

  • RecipientReceiptMetadata.ReceiptStatus = WaitingForReceipt (для отправителя)

  • RecipientReceiptMetadata.ReceiptStatus = HaveToCreateReceipt (для получателя)

  • RevocationStatus <> RevocationAccepted

  • RecipientReceipt.Status = WaitingForReceipt (для отправителя)

  • RecipientReceipt.Status = HaveToCreateReceipt (для получателя)

  • Revocation.RevocationStatus <> RevocationAccepted (или отсутствует)

Ожидается аннулирование

Требуется аннулирование

  • RevocationStatus = RevocationIsRequestedByMe (для отправителя)

  • RevocationStatus = RequestsMyRevocation (для получателя)

  • Revocation.RevocationStatus = RevocationIsRequestedByMe (для отправителя)

  • Revocation.RevocationStatus = RequestsMyRevocation (для получателя)

Согласование

Согласован

Согласован

  • ResolutionStatus.Type = Approved

  • Resolution.ResolutionStatus = Approved

На согласовании или подписании

На согласовании или подписании

  • ResolutionStatus.Type = ApprovementRequested

  • Resolution.ResolutionStatus = ApprovementRequested

Запрошена подпись

На подисании

  • ResolutionStatus.Type = SignatureRequested

  • Resolution.ResolutionStatus = ApprovementSignatureRequested

Отказано в согласовании

Отказано в согласовании

  • ResolutionStatus.Type = Disapproved

  • Resolution.ResolutionStatus = Disapproved

Отказано в запросе подписи

Отказано в запросе подписи

  • ResolutionStatus.Type = SignatureDenied

  • Resolution.ResolutionStatus = SignatureDenied

Другое

Подпись отправителя проверена и валидна

  • SenderSignatureStatus = SenderSignatureCheckedAndValid

  • SenderTitleDocflow.SenderSignatureStatus = SenderSignatureCheckedAndValid

Подпись отправителя не проверена

  • SenderSignatureStatus = SenderSignatureUnchecked

  • SenderTitleDocflow.SenderSignatureStatus = SenderSignatureUnchecked

Не прочитан

  • IsRead = false

  • IsRead = false