Closed kyklochev closed 2 years ago
Вам зачем? Походу одно и то же делаем. Задача явно по отправленным докам ловить состояние подписали или нет. Я делаю примерно так: var EvetsList = diadocApi.GetNewEvents(authTokenByCertificateThumbprint, myBox.BoxId, lasteventid, null, null, null, null, null, TicksFromStart); Последнее просто передают определенную дату, чтобы не тянуть события за весь период. Ключевое -lasteventid - последнее обработанное событие. Его его в базе храню. ну а дальше ` foreach (BoxEvent even in EvetsList.Events) {
if (even.HasMessage)
{
gg++;
Diadoc.Api.Proto.Events.Message msg = even.Message;
foreach (Entity MsgEnty in msg.Entities)
{
//MsgEnty.DocumentInfo.DocumentNumber;
//MsgEnty.DocumentInfo.DocumentDate;
if (MsgEnty.DocumentInfo != null)
{
Diadoc.Api.Proto.Documents.Document docinfo = MsgEnty.DocumentInfo;
if (docinfo.Type == Diadoc.Api.Com.DocumentType.UniversalTransferDocument)
{
Diadoc.Api.Proto.Documents.Document doc = diadocApi.GetDocument(authTokenByCertificateThumbprint, myBox.BoxId, docinfo.MessageId, docinfo.EntityId);
string depId = doc.DepartmentId;`
Бизнес задача - гарантированно выгружать всё подписанные документы в автоматическом режиме. Т. е. получаем список документов по которым статус изменился сегодня и пытаемся их скачать с применением пакетной статусной модели (если хотя бы один документ пакета имеет не конечный статус, то такой пакет не выгружаем, условно завтра последний документ пакета будет подписан, мы получим его в отборе изменения статуса за день, попробуем выгрузить весь пакет проверив статусную модель и уже выгрузим).
Как я понял, Вы список событий методом GetNewEvents, сохраняете в БД, потом разбираете информацию выделяя атрибуты документов. А можно из ответа метода GetNewEvents получить DocumentID?
У Event есть message, у message есть entity, у entity docinfo - смотрите код выше. Там все что нужно.
Diadoc.Api.Proto.Documents.Document doc = diadocApi.GetDocument(authTokenByCertificateThumbprint, myBox.BoxId, docinfo.MessageId, docinfo.EntityId);
Я получаю ленту событий, из событий получаю то что связано с документами и обновляю их статус, вытаскиваю печатную форму.
Здравствуйте!
Требуется получить список документов у которых статус изменился сегодня / вчера / произвольный интервал. Для интеграции используется библиотека Диадок COM SDK. В документации https://developer.kontur.ru/Docs/diadoc-api/http/GetDocuments.html не нашёл описания такого отбора, хотя ранее использовали коннектор Reporter и в нем можно было настроить выгрузку документов по дате изменения статуса (выгружать все документы, у которых статус был изменен после 01.01.2022).
Подскажите, какой метод и с какими параметрами необходимо вызвать, чтобы получить список документов, по которым статус был изменен в соответствии с отбором по интервалу дат?