Работа с наблюдателями

Наблюдатель — организация, которая получает титулы перевозочного документа с подписями, а также следит за статусом документооборота. Наблюдатель не подписывает титулы и не формирует ответные титулы.

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

Инструкция описывает работу с наблюдателями для следующих типов документов:

Для ЭТрН работа с наблюдателями устроена иначе: копия приходит наблюдателю отдельным документом с функцией fwd. Подробнее — в разделе Добавление наблюдателей в титулы.

Добавление наблюдателя

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

В XML-файле титула идентификатор наблюдателя нужно передать в элементе ИдПолИной:

  • для заказа-заявки — в титуле заказчика;

  • для поручения экспедитору — в титуле клиента;

  • для экспедиторской расписки — в титуле экспедитора;

  • для складской расписки — в титуле экспедитора.

Наблюдатели в первых титулах

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

Чтобы указать в титуле наблюдателя:

  1. Получите идентификатор участника ЭДО для каждой организации-наблюдателя FNSId с помощью метода GetOrganization.

    Идентификатор участника ЭДО — это значение длиной от 4 до 46 символов, состоящее из трехзначного кода оператора и кода участника.

  2. Укажите полученные идентификаторы FNSId в первом титуле. Каждый идентификатор указывается отдельным элементом.

    • При генерации титула методом GenerateTitleXml укажите их в элементе OtherRecipientId внутри OtherRecipientIds упрощенного файла UserDataXml. Генерация доступна для титула заказчика заказа-заявки, титула клиента поручения экспедитору и титула экспедитора экспедиторской расписки. Имя файла формировать не нужно: Диадок сам заполнит атрибут ИдФайл. Если наблюдатели указаны, в нем будет W = 1. Обратите внимание, что для складской расписки генерация недоступна.

    • При самостоятельном формировании XML-файла укажите идентификаторы в элементе ИдПолИной и поставьте в имени файла W = 1. Имена файлов описаны в разделах:

  3. Отправьте титул методом PostMessage (V3) так же, как и документ без наблюдателя: в качестве получателя укажите ящик основного контрагента. Роль наблюдателя default:viewer Диадок заполнит автоматически на основании элемента ИдПолИной.

Пример наблюдателя в UserDataXml:

<OtherRecipientIds>
    <OtherRecipientId>2BM-7708004767-770801001-202405081118221234567</OtherRecipientId>
    <OtherRecipientId>2BM-7736050003-773601001-202405081119335678901</OtherRecipientId>
</OtherRecipientIds>

Пример наблюдателя в XML-файле титула:

<ИдПолИной>2BM-7708004767-770801001-202405081118221234567</ИдПолИной>
<ИдПолИной>2BM-7736050003-773601001-202405081119335678901</ИдПолИной>

Обратите внимание, что на идентификатор наблюдателя FNSId накладываются ограничения:

  • если FNSId не соответствует формату идентификатора участника ЭДО, Диадок не примет документ и вернет ошибку DocumentService.InvalidFnsIdFormat;

  • если FNSId наблюдателя совпадает с идентификатором отправителя или получателя титула, этот участник получит титул только один раз — как основной участник документооборота.

Наблюдатели в ответных титулах

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

Список для пересылки Диадок берет из первого титула и отправляет наблюдателям все последующие титулы и подписи к ним. В файл ответного титула идентификаторы записывает пользователь. Если в ответном титуле указана организация, которой не было в первом титуле, Диадок не добавит ее в наблюдатели.

В заказе-заявке в Т2 повторите тот же список ИдПолИной, что и в Т1. В UserDataXml титула перевозчика отдельного поля для наблюдателей нет: при генерации методом GenerateTitleXml передать этот список нельзя, его нужно указать в XML-файле титула.

В поручении экспедитору в Т2 и Т3 повторите тот же список, что и в Т1:

  • если вы генерируете титул методом GenerateTitleXml — в элементе OtherRecipientId внутри OtherRecipientIds упрощенного файла UserDataXml;

  • если вы формируете XML-файл титула самостоятельно — в элементе ИдПолИной.

Получение титулов и подписей

Наблюдатель получает титулы и подписи к ним в свой ящик как обычные входящие документы. Тип, функция и версия документов у наблюдателя такие же, как у отправителя и получателя. Найти такие документы можно чтением ленты событий или поиском. Инструкция о получении документов приведена на странице Получение документов.

В титуле, который получает наблюдатель, отправителем и получателем остаются основные участники документооборота. В структуре DocumentParticipantV2 это участники с Type = Sender и Type = Recipient. Наблюдатель в эти значения не подставляется. Например, заказчик отправляет перевозчику заказ-заявку и указывает наблюдателя в содержимом Т1. Наблюдатель получит Т1, в котором отправитель — заказчик, а получатель — перевозчик.

В ящике титулы наблюдателя и входящие документы получателя выглядят одинаково. Отличить документ наблюдателя от документа получателя можно по роли участника документооборота или по доступным действиям.

Роль указана в поле Role структуры DocumentParticipantV2 у участника с IsCurrentBox = true. Значение default:viewer показывает, что текущий получатель документа — наблюдатель и не участвует в документообороте документа.

Титул появляется в ящике:

  • для ЭР и СР: после того, как титул экспедитора доставлен заказчику;

  • для ЭЗЗ: Т1 — после доставки перевозчику, Т2 — после доставки грузоотправителю;

  • для ПЭ: Т1 — после доставки экспедитору, Т2 — после доставки заказчику, Т3 — после доставки экспедитору.

Чтобы понять, как реагировать на документ, роль можно не проверять. Вызовите метод GetDocumentActions: он учитывает и роль, и состояние документа и вернет список действий. Для наблюдателя действуют следующие правила на доступные действия с документом:

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

  • доступны согласование и маршруты согласования;

  • доступны добавление тегов и перемещение документа в подразделение.

Статус документооборота для наблюдателя

Статус документооборота документа возвращается в структуре Document и в структуре DocflowStatusV3 — в поле DocflowStatus структуры DocflowV5.

Для наблюдателя значение PrimaryStatus.Severity всегда равно Info: действие по документу не требуется. Текст PrimaryStatus.StatusText показывает, завершен ли документооборот или ожидается подпись контрагента.

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

Текст статуса у наблюдателя

Событие

Поручение экспедитору

Заказ-заявка

ЭР и СР

Первый титул доставлен получателю

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

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

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

Т2 доставлен

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

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

—

Т3 доставлен

Отозван

—

—

Для заказа-заявки текст после Т2 зависит от того, подтвердил перевозчик заказ или отказал в нем в содержимом Т2.