.. _Integration_IntegrationApi_StatusesHistory_StatusesHistoryConcept: Как работать с историей статусов ################################ Статус документа - это изменение, которое произошло с документом в рамках документооборота. Любое действие - отправка, получение, приемка, отклонение, и т.д. - приводит к появлению статуса. Статус может ссылаться на вложения и подписи под ними. Например: * статусы "Отправлен" и "Получен" ссылаются на первичное вложение документа (титул продавца для УПД/УКД, неформализованный документ, и т.д.) и подписи под ним; * статус "Принят" ссылается на вложение, характерное для процесса приемки (титул покупателя для УПД/УКД, неформализованный документ, и т.д.), и подписи под ним. Статусы публикуются интеграционным модулем в Integration API Продукта в виде истории статусов. История статусов ведется в разрезе операторских ящиков, настроенных в Продукте. История статусов должна загружаться внешней системой итерационно. Для этого внешняя система должна периодически запрашивать изменения, которые произошли после сохраненной на предыдущем шаге метки. В качестве метки должен использоваться идентификатор последнего статуса (целое число). В общем случае порядок работы с историей статусов выглядит следующим образом: * выполнить первый запрос истории статусов по ящику, указав значение ``0`` для идентификатора последнего статуса; * обработать новые статусы; * сохранить идентификатор последнего статуса, который пришел в ответе на запрос; * взять паузу; * выполнить следующий запрос истории статусов по ящику, указав значение последнего статуса, полученного на предыдущей итерации; * обработать новые статусы; * сохранить идентификатор последнего статуса, который пришел в ответе на запрос; * и т.д. Если на какой-то итерации новых статусов не было, идентификатор последнего статуса не обновляется. | См. также: | :ref:`Integration_IntegrationApi_Helpers_WorkingWithReferences_GettingStatusesReference` Текущий статус документа ************************ Текущий статус документа - это изменение, которое повлияло на возможные дальнейшие действия с документом. Часть статусов из истории задаются в качестве текущих статусов. Например, "Документ передан оператору", "Отправлен", "Получен", "Принят", и т. п. Статусы, которые не влияют на возможные дальнейшие действия, являются информационными. Например, "Обработан в ГИС МТ", "Результаты проверки РНПТ", и т. п. Статусы vs. события ******************* События - это детализация изменений, которые произошли с документом в рамках документооборота. В общем случае на каком-то этапе документооборота у документа может быть *несколько* событий, которым соответствует *один* статус. Например, статус "Отправлен" (код статуса ``S``) для УПД СЧФДОП соответствует четырем событиям: * ``S`` - отправлен титул продавца УПД СЧФДОП. Вложением события будет титул продавца и подпись к нему. * ``S2`` - получено подтверждение даты получения (ПДПОЛ) УПД СЧФДОП оператором. Вложением события будет ПДПОЛ и подпись к нему. * ``S1`` - получено извещение о получении (ИОП) УПД СЧФДОП покупателем. Вложением события будет ИОП и подпись к нему. * ``S4`` - получено подтверждение даты отправки (ПДОТПР) ИОП оператором. Вложением события будет ПДОТПР и подпись к нему. При этом события ``S1`` и ``S4`` - опциональны (покупатель не обязан формировать ИОП), события ``S`` и ``S2`` будут всегда. В истории статусов для этапа отправки УПД СЧФДОП будет опубликован один статус ``S``. Количество событий при этом будет зависеть от конкретной ситуации. .. note:: События не публикуются в виде ленты. Их вместе в вложениями можно запросить с помощью :ref:`расширенной информации по выбранному документу `.