Работа с наблюдателями
Наблюдатель — организация, которая получает титулы перевозочного документа с подписями, а также следит за статусом документооборота. Наблюдатель не подписывает титулы и не формирует ответные титулы.
Наблюдатель указывается в первом титуле. После этого он будет получать все титулы документа и подписи к ним: для таких документов наблюдателю не будут доступны ответные действия. Чтобы понять, что титул пришел ему как наблюдателю, он может проверить свою роль в этом документе.
Инструкция описывает работу с наблюдателями для следующих типов документов:
ЭЗЗ — заказ-заявка,
ПЭ — поручение экспедитору,
ЭР — экспедиторская расписка,
СР — складская расписка.
Для ЭТрН работа с наблюдателями устроена иначе: копия приходит наблюдателю отдельным документом с функцией fwd. Подробнее — в разделе Добавление наблюдателей в титулы.
Добавление наблюдателя
Наблюдатель указывается в первом титуле. Диадок получает данные наблюдателей из его содержимого и автоматически направляет им все титулы и подписи к ним. Если документ создан из шаблона, Диадок так же читает наблюдателей из содержимого титула после создания документа.
В XML-файле титула идентификатор наблюдателя нужно передать в элементе ИдПолИной:
для заказа-заявки — в титуле заказчика;
для поручения экспедитору — в титуле клиента;
для экспедиторской расписки — в титуле экспедитора;
для складской расписки — в титуле экспедитора.
Наблюдатели в первых титулах
В зависимости от того, как формируется титул, — с помощью метода генерации или самостоятельно, — добавлять наблюдателей в титул нужно разными способами.
Чтобы указать в титуле наблюдателя:
Получите идентификатор участника ЭДО для каждой организации-наблюдателя
FNSIdс помощью метода GetOrganization.Идентификатор участника ЭДО — это значение длиной от 4 до 46 символов, состоящее из трехзначного кода оператора и кода участника.
Укажите полученные идентификаторы
FNSIdв первом титуле. Каждый идентификатор указывается отдельным элементом.При генерации титула методом GenerateTitleXml укажите их в элементе
OtherRecipientIdвнутриOtherRecipientIdsупрощенного файла UserDataXml. Генерация доступна для титула заказчика заказа-заявки, титула клиента поручения экспедитору и титула экспедитора экспедиторской расписки. Имя файла формировать не нужно: Диадок сам заполнит атрибутИдФайл. Если наблюдатели указаны, в нем будетW = 1. Обратите внимание, что для складской расписки генерация недоступна.При самостоятельном формировании XML-файла укажите идентификаторы в элементе
ИдПолИнойи поставьте в имени файлаW = 1. Имена файлов описаны в разделах:
Отправьте титул методом 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.