3.3.4.2. Метод GetDocflowsList
 
Этот метод позволяет получать с сервера системы Такском-Доклайнз и обновлять список входящих и исходящих документов (документооборотов), к которым имеет доступ данный сотрудник, с учётом изменения статусов документооборотов (атрибуты Status и InternalStatus), отражающих выполнение транзакций, предусмотренных Регламентами ЭДО, а также передачу документа внутри организации для подписания или согласования.
Если метод вызывается с указанным параметром date, то результат будет содержать список документооборотов, статус которых изменялся после указанного момента времени. Рекомендуется указывать в качестве параметра date момент предыдущего вызова этого метода в соответствии со следующим алгоритмом:
1.
Вызов метода GetDocflowsList с указанием даты и времени предыдущего вызова этого метода для получения списка изменений статусов документооборотов.
Если в составе хотя бы одной транзакции присутствует параметр AdditionalParameter с Name="GroupID, то вызвать метод GetGroupList (см. п. 3.3.4.17) с той же меткой времени, что и вGetMessageList для получения полного состава групп (пакетов документов).
Если Ваша система предусматривает для ЭДО статусы CompletedWithDivergences и NotAccepted, то параметр includeExtendedDocflowStatuses = true.
2.
Сохранение атрибута LastRecordDateTime для использования при следующем вызове метода.
3.
Проверка значения атрибута IsLast.
4.
Если IsLast=true,  - переход к шагу 8.
5.
Если IsLast=false, - вызов метода GetDocflowsList с использованием сохранённого значения атрибута LastRecordDateTime в качестве значения параметра Date.
6.
Добавление полученного результата вызова метода к списку изменений статусов документооборотов.
7.
Переход к шагу 2.
8.
Обработка обновлённого списка изменений статусов документооборотов.
Если, например, в результате вызова метода получен XML файл с атрибутами IsLast="false" LastRecordDateTime="2013-10-04 14:26:02.697", то при следующем вызове метода GetDocflowsList на шаге 5 параметру Date следует дать значение "2013-10-04 14:26:02.697".
Внимание!
Для поддержания стабильности обработки запросов на сервере Такском-Доклайнз метод GetDocflowsList следует вызывать не чаще, одного раза в минуту.
 
byte[] GetDocflowsList(DocFlowStatus? status, DateTime date, DocFlowDirection? direction, includeExtendedDocflowStatuses? bool, withGroupInfo? bool);
 
status
Статус документооборота:
  •  Sending - для документооборота входящего или исходящего документа, для которого выполнение регламентных транзакций не завершено или для документооборота исходящего документа, для которого выполнение предусмотренных Регламентом транзакций не началось.
  •  ResignWaiting - для документооборота входящего двухстороннего документа, ожидающего подписания или отклонения.
  •  Succeed - для успешно завершенного документооборота.
  •  CompletedWithWarning - для документооборота отклонённого получателем документа.
  •  Fail - при остановке доставки документа из-за ошибки.
  •  WaitingForCancellation  - в ожидании аннулирования.
  •  Cancelled – аннулирован.
  •  CompletedWithDivergences - завершен с расхождениями.
  •  NotAccepted - документ не принят.
 
date
Этот параметр устанавливает момент времени, начиная с которого будут собраны данные об изменении статусов документооборотов участника ЭДО.
direction
Для отбора при фильтрации записей о документах только одного из направлений:
  •  Ingoing - только входящих;
  •  Outgoing - только исходящих.
includeExtendedDocflowStatuses
Если этому параметру задано значение true, то результат вызова учитывает значения статусов CompletedWithDivergences и NotAccepted. Если false (значение по умолчанию), или параметр не задан, то вместо статуса  CompletedWithDivergences или NotAccepted  возвращается значение Succeed.
withGroupInfo 
Необязательный параметр, принимающий значение "true" или "false".
При значении "true" в xml ответа в блок AdditionalData будет записан признак принадлежности к пакету в виде тега AdditionalParameter с Name="GroupID" Value "[GuidGroup]", где [GuidGroup]- GUID группы, в которую входит транзакция.
 
 
Метод возвращает список документооборотов в формате XML. XSD схема этого XML файла такая же, как для файла meta.xml контейнера Такском (см. п. 2.1.4. Транспортный контейнер Такском) с дополнительным атрибутом docflow InternalStatus, который предназначен для отражения состояния обработки полученного или готовящегося к отправке документа внутри организации и может принимать одно из следующих значений:
None - значение отсутствует.
OnNegotiation - документ направлен на согласование, ожидает согласования.
NegotiationOk - документ успешно согласован.
NegotiationRejected - согласование документа отклонено.
OnSign - документ направлен на подписание и ожидает подписания или отклонения.
SignOk - документ успешно подписан.
SignRejected - подписание документа отклонено.
Каждый документооборот имеет следующие атрибуты:
Status - см. табл. ниже.
DocflowID - ID документооборота, который используется при вызове других методов (3.3.4.4. Метод GetMainDocumentContainerFromDocflow, 3.3.4.5. Метод GetDocflowRawData и 3.3.4.7. Метод GetStatus). Например, если <DocFlow Id="903f269a-c5b2-4b04-b0a3-17ff1a8c0669" … >, то вызовом метода GetDocflowRawData ("903f269a-c5b2-4b04-b0a3-17ff1a8c0669") с этим параметром можно получить контейнер Такском этого документооборота с исходным документом и всеми служебными сообщениями.
ExternalIdentifier: ID электронного документа в ERP или учётной системе, интегрированной с Такском-Доклайнз.
InternalID: ID  электронного документа в системе  Такском-Доклайнз (используется при вызове метода PrintDocument).
Таблица зависимости значений статусов в ответе метода от значения статуса, указанного в качестве параметра метода GetDocflowsList:
Значение параметра Status, заданное при вызове  метода GetDocflowsList
Значение параметра includeExtendedDocflowStatuses   метода GetDocflowsList
Возможные значения параметра Status в XML файле списка документооборотов (в результате вызова метода)
Описание
Sending
false или true
NotStarted
Электронный документ загружен на сервер Такском-Доклайнз, но метод AutoSendReceive для реализации регламентных транзакций не запущен, или проверка соответствия XSD схеме выявила ошибки.
InProgress
Некоторые транзакции Регламента ЭДО для данного документа выполнены.
ResignWaiting
false или true
InProgress и атрибут ResignRequired в card.xml имеет значение true
Входящая накладная ТОРГ-12 или акт о выполнении работ (оказании услуг) ожидает действий Получателя.
Succeed
false или true
Succeed
Выполнение транзакций, предусмотренных Регламентом для данного документа, успешно завершено.
CompletedWithWarning
false или true
Warning
Документооборот завершен с получением уведомления об уточнении.
 CompletedWithDivergences
true
CompletedWithDivergences
завершен с расхождениями
false
Succeed
Выполнение транзакций, предусмотренных Регламентом для данного документа, успешно завершено.
NotAccepted
true
NotAccepted
Документ не принят
false
Succeed
Выполнение транзакций, предусмотренных Регламентом для данного документа, успешно завершено.
Fail
false или true
Error
Документооборот не завершен из-за ошибки.
WaitingForCancellation
false или true
InProgress
В ожидании аннулирования.
Cancelled
false или true
Warning
Документооборот аннулирован.
 
Пример XML файла результата метода GetDocflowsList
<?xml version="1.0" encoding="utf-8" ?>
<ContainerDescription RequestDateTime="2013-10-04 14:51:55.784" IsLast="true" LastRecordDateTime="2013-10-04 14:26:02.697" xmlns="http://api-invoice.taxcom.ru/meta">
   <DocFlow Id="903f269a-c5b2-4b04-b0a3-17ff1a8c0669" Status="Succeed" StatusChangeDateTime="2013-10-04 11:36:15.100">
       <Documents>
           <Document>
               <Definition>
                   <Identifiers InternalId=
"f6008ec6-9a18-4547-999a-dbd33b5b0679" ExternalIdentifier="ON_SFAKT_2AL-93C4DFF6-FE2C-4075-B4FC-
5B4C5519D529-00000_2AL-072439A8-4900-436A-920A-0583E0803F20-00000_20130901_f9ccdae6-
1343-454f-
9fe5-a71edc5d4599.xml" />
               </Definition>
           </Document>
       </Documents>
   </DocFlow>
</ContainerDescription>
 
Существует еще один метод GetDocflowsListWithTransportInfo, который может быть использован для получения более подробной информации о документооборотах, например, получения полного списка выполненных транзакций документооборота, предусмотренных Регламентом . Этот метод принимает и использует те же параметры, что и метод GetDocflowsList.
Метод GetDocflowsListWithTransportInfo также возвращает атрибут ExternalIdentifier, который позволяет связать электронный документ, обработанный в системе Такском-Доклайнз с соответствующими записями в ERP или учётной системе, интегрированной с Такском-Доклайнз.
Например, в фрагменте XML файла ниже атрибут ExternalIdentifier имеет значение "ON_SFAKT_2AL-93C4DFF6-FE2C-4075-B4FC-5B4C5519D529-00000_2AL-072439A8-4900-436A-920A-0583E0803F20-00000_20130901
_f9ccdae6-1343-454f-9fe5-a71edc5d4599.xml", а атрибут docFlowID имеет значение "903f269a-c5b2-4b04-b0a3-17ff1a8c0669". Таким образом, атрибут docFlowID можно использовать, чтобы получить электронный документ и контейнер Такском по его ExternalIdentifier.
 
Пример XML файла результата метода GetDocflowsListWithTransportInfo
<?xml version="1.0" encoding="utf-8" ?>
<ContainerDescription RequestDateTime="2013-10-04 14:58:20.315" IsLast="true" LastRecordDateTime="2013-10-04 14:26:02.697" xmlns="http://api-invoice.taxcom.ru/meta">
   <DocFlow Id="903f269a-c5b2-4b04-b0a3-17ff1a8c0669" Status="Succeed" StatusChangeDateTime="2013-10-04 11:36:15.100">
       <Documents>
           <Document ReglamentCode="Invoice" TransactionCode="Invoice" DateTime="2013-09-25T15:19:25.61">
               <Definition>
                   <Identifiers InternalId="f6008ec6-9a18-4547-999a-dbd33b5b0679" ExternalIdentifier=
"ON_SFAKT_2AL-93C4DFF6-FE2C-4075-B4FC-5B4C5519D529-00000_2AL-072439A8-4900-436A-920A-0583E0803F20-00000_20130901_f9ccdae6-
1343-454f-9fe5-a71edc5d4599.xml" />
               </Definition>
           </Document>
           <Document ReglamentCode="Invoice" TransactionCode="PostDateConfirmation" DateTime="2013-09-25T15:52:01.797" />
           <Document ReglamentCode="Invoice" TransactionCode="PostDateConfirmationReceiveNotice" DateTime="2013-09-30T16:45:30.04" />
           <Document ReglamentCode="Invoice" TransactionCode="ReceiveNotice" DateTime="2013-10-04T11:36:15.1" />
       </Documents>
   </DocFlow>
</ContainerDescription>