3.2.4.2. Метод GetMessageList
|
|
Метод GetMessageList должен использоваться периодически для получения с сервера системы Такском-Доклайнз списка входящих или исходящих транзакций для всех получаемых и отправляемых электронных документов. Этот список содержит коды транзакций и уникальные идентификаторы документооборотов (docflow ID). Эти атрибуты позволяют определить транзакции, которые требуется выполнить на следующем шаге для соблюдения регламентов ЭДО.
Метод GetMessageList использует параметр даты и времени (отметку времени timestamp) для сокращения объёма возвращаемых результатов. Обычно в качестве этого параметра используется дата и время последнего выполненного вызова метода GetMessageList. Такой подход позволяет получать для обработки только новые данные.
Метод GetMessageList позволяет получить не более 500 записей при одном вызове. Атрибут IsLast в ответе метода указывает, что все имеющиеся на сервере Такском-Доклайнз данные по запросу получены полностью.
Рекомендуется применять следующий алгоритм получения списка последних транзакций:
1.
|
Вызвать метод GetMessageList с отметкой времени предыдущего вызова для получения списка последних транзакций.
Если в составе хотя бы одной транзакции присутствует параметр AdditionalParameter с Name="GroupID, то вызвать метод GetGroupList (см. п. 3.2.11) с той же меткой времени, что и в GetMessageList для получения полного состава групп (пакетов документов).
|
2.
|
Сохранить время вызова метода для использования при следующем вызове в качестве атрибута LastRecordDateTime.
|
3.
|
Проверить значение атрибута IsLast.
|
4.
|
Если IsLast=true, - перейти к пункту 8.
|
5.
|
Если IsLast=false, вызвать метод GetMessageList с использованием сохранённого значения атрибута LastRecordDateTime в качестве параметра Date.
|
6.
|
Добавить записи из ответа в список последних транзакций.
|
7.
|
Перейти к пункту 2.
|
8.
|
Продолжить обработку транзакций из полного списка последних транзакций, полученного с использованием метода GetMessageList.
|

Метод GetMessageList возвращает список входящих (по умолчанию) или исходящих (если параметр direction имеет значение "outgoing") электронных документов и служебных сообщений. Интеграционное решение должно самостоятельно вести полные списки транзакций (служебных сообщений и электронных документов) для входящих и исходящих электронных документов, чтобы можно было убедиться, что все входящие служебные сообщения получены, а исходящие - отправлены.
Например, список исходящих транзакций ЭДО счетов-фактур содержит: Invoice, PostDateConfirmation, PostDateConfirmationReceiveNotice, ReceiveNotice, CorrectionNotice, CorrectionNoticeReceiveNotice. Метод GetMessageList возвращает транзакции (служебные сообщения и документы), если соответствующие им сообщения отправлены Оператором ЭДО или контрагентом: PostDateConfirmation, ReceiveNotice, CorrectionNotice.
Если параметр withTracing метода GetMessageList имеет значение "true", в ответ, кроме прочих, включаются транзакции (сообщения) с типами TracingAccepted, TracingRejected, TracingCancellationAccepted, TracingCancellationRejected, TracingAcceptedMod, TracingRejectedMod.
Если параметр withTracing метода GetMessageList имеет значение "false", транзакции с типами TracingAccepted, TracingRejected, TracingCancellationAccepted, TracingCancellationRejected, TracingAcceptedMod, TracingRejectedMod в ответ не войдут.
ВНИМАНИЕ!
Для обеспечения стабильности работы сервера системы Такском-Доклайнз метод GetMessageList должен вызываться не чаще, чем один раз в минуту.
|
HTTP-запрос
HTTP-method: GET
Адрес запроса (URI)
| |
https://<server>.taxcom.ru/v<version>/API/GetMessageList?date={DATE}&direction={direction}&withTracing={withTracing}
| |
Параметры адреса запроса
| |
DATE
|
Обязательный параметр, указывающий момент времени, начиная с которого следует собрать и представить сведения об изменениях.
В качестве этого параметра указывается момент предыдущего вызова метода.
Формат параметра DATE: yyyy-MM-ddTHH:mm:ss.ms
|
direction
|
Необязательный параметр, принимающий значение "ingoing" или "outgoing".
По умолчанию (если параметр не задан) будет использоваться значение "ingoing" (входящие сообщения).
|
withTracing
|
Необязательный параметр, принимающий значение "true" или "false".
По умолчанию (если параметр не задан) будет использоваться значение "false".
|
withGroupInfo
|
Необязательный параметр, принимающий значение "true" или "false".
При значении true в xml ответа в блок AdditionalData будет записан признак принадлежности к пакету следующего вида:
AdditionalParameter с Name="GroupID" Value "[GuidGroup]", где [GuidGroup] - GUID группы, в которую входит транзакция.
|
Заголовок запроса
| |
Integrator-Id
|
Идентификатор интеграционного решения. Формат этого идентификатора:
COMPANY_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
|
Assistant-Key
|
Маркер временного доступа (Authorization token)
|
Например, вызов метода GetMessageList для получения всех входящих записей после 1 января 2013 г. выглядит так:
https://api-invoice.taxcom.ru/v1.3/API/GetMessageList?DATE=2013-01-01T00:00:00:00
HTTP- ответ
XML файл со списком транзакций:
ContainerDescription:
Тег
|
Тип
|
Описание
|
Обязательность заполнения
|
RequestDateTime
|
Текст, 32 символа
|
Дата и время запроса
|
Да
|
IsLast
|
Логическое (булево) значение (true/false)
|
Индикатор полноты полученных данных
|
Да
|
LastRecordDateTime
|
Дата и время
|
Дата и время последнего обновления списка
|
Да
|
DocFlow*
|
Complex type
|
Список транзакций (электронный документ и служебные сообщения)
|
Нет
|
*DocFlow:
Тег
|
Тип
|
Описание
|
Обязательность заполнения
|
Id
|
Текст, 32 символа
|
Уникальный идентификатор документа в системе Такском-Доклайнз
|
Да
|
Documents
|
Complex Type
|
Содержит один или более тегов Document** с данными о конкретных транзакциях (документах или служебных сообщениях)
|
Нет
|
GroupID
|
Guid
|
Уникальный идентификатор группы, в которую входит транзакция
|
Нет
|
**Document:
Атрибут
|
Тип
|
Описание
|
Обязательность заполнения
|
ReglamentCode
|
Текст
|
Код регламента ЭДО
|
Да
|
TransactionCode
|
Текст
|
Код транзакции
|
Да
|
Definition
|
Complex Type
|
Содержит Identifiers*** - данные о конкретном документе или служебном сообщении.
Содержит AdditionalData**** - сведения о дополнительных данные.
|
Нет
|
***Identifiers:
Атрибут
|
Тип
|
Описание
|
Обязательность заполнения
|
InternalId
|
Текст, 32 символа
|
Уникальный внутренний идентификатор документа или служебного сообщения в системе Такском-Доклайнз
|
Да
|
ExternalIdentifier
|
Текст, 32 символа
|
Идентификатор, определённый клиентским программным обеспечением.
|
Нет
|
**** AdditionalData:
Атрибут
|
Тип
|
Описание
|
Обязательность заполнения
|
AdditionalParameter
|
Complex Type
|
Содержит один или более тегов с дополнительными параметрами
|
Да
|
Name
|
Текст
|
Название параметра.
Значение "MinTransId" забронировано в качестве значения атрибута Name для ID документа, присвоенного документу в системе Минтранса ГИС ЭПД или оператором ИС ЭПД.
|
Да
|
Value
|
Текст
|
Значение параметра.
Если в запросе параметр withGroupInfo имеет значение "true", то в качестве значения атрибута Value записывается GUID группы, в которую входит транзакция.
|
Да
|
XSD схема XML файла ответа метода GetMessageList такая же, как для файла meta.xml контейнера Такском. XSD-схему (meta.xsd) можно скачать по ссылке:
Пример ответа метода GetMessageList

Пример кода C#
public void GetMessageListFromdate(string date, string direction)
{
try
{
// Call GetMessageList method to get the list of updated transactions
var request = (HttpWebRequest)WebRequest.Create(Settings.Default.API_srv + "API/GetMessageList" + "?date=" + date + "&direction=" + direction);
request.Headers.Add("Integrator-Id", "xxxxxxxxxxxxxx");
request.Headers.Add("Assistant-Key", "token");
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
var response = (HttpWebResponse)request.GetResponse();
Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
// Read XML after GetMessageList method call
using (var responseStream = response.GetResponseStream())
using (var ms = new MemoryStream())
using (var reader = new StreamReader(ms))
{
responseStream.CopyTo(ms);
ms.Position = 0;
var result = reader.ReadToEnd();
}
}
catch (WebException exception)
{
Assert.Fail("There is an error while getting the results of GetMessageList");
}
}