diadocsdk-csharp icon indicating copy to clipboard operation
diadocsdk-csharp copied to clipboard

Пример использования AfterIndexKey

Open dertkoD opened this issue 2 years ago • 6 comments

Добрый день, обратился в поддержку, потому что при вызове функции GetContragents() не приходит добрая часть контрагентов (приходят 100, а на самом деле их 177). В поддержке посоветовали использовать AfterIndexKey. Из документации совершенно не ясно какое значение должно быть в этом AfterIndexKey. Не могли бы вы отправить пример использования этой функции GetContragents() с значением AfterIndexKey?

dertkoD avatar May 18 '22 10:05 dertkoD

var f1 = diadocApi.GetCounteragents(authTokenByCertificateThumbprint, myOrganisation.OrgId.... в первой итерации индекс не передаете var c = f1.Counteragents[f1.Counteragents.Count-1]; c.IndexKey; есть индекс последнего полученного контрагента. Ну и дальше повторно GetCounteragents уже с индексом.

yudinvs1 avatar May 18 '22 10:05 yudinvs1

Я вас вообще не понял. Мне нужно вызвать сначала GetCounteragents() без AfterIndexKey, потом... взять последнего контрагента и взять из него AfterIndexKey и вызвать GetCounteragents() уже с этим AfterIndexKey. Я правильно понял?

dertkoD avatar May 19 '22 11:05 dertkoD

Да. Выдаст следующую порцию. и так по кругу. За один раз отдает 100

yudinvs1 avatar May 19 '22 11:05 yudinvs1

Т.е. эта функция GetCounteragents() может предоставить максимально только 100 контрагентов? А дальше нужно вызывать эту функцию еще раз с AfterIndexKey?

dertkoD avatar May 19 '22 11:05 dertkoD

Да. Это описано в документации.

yudinvs1 avatar May 19 '22 11:05 yudinvs1

Вчера Диадок поменял int строки на hex строки. Пришлось поправить код. Может кому пригодится.

            string currentIndex = "";
            do
            {
                var casList = ddc.Api.GetCounteragents(ddc.CurrentToken, orgId, caStatus, currentIndex.ToString());
                // TotalCount - это количество еще необработанных, а не общее количество КА
                foreach (var ca in casList.Counteragents)
                    TryAddNewPartnership(db, dbBox, ca);
                if (casList.TotalCount <= 100) break;
                currentIndex = casList.Counteragents.Last().IndexKey;
            } while (true);

IverCold avatar Sep 13 '22 18:09 IverCold