Имя: Пароль:
1C
1С v8
Вопрос по работе с Com.DiadocApi
,
0 Strogg
 
04.03.21
16:39
Привет, Коллеги.
Не могу понять, как работает этот зловредный диадок.
Пример беру прямо из примеров на сайте с минимальными различиями.

    DiadocApi = Новый ComОбъект("Diadoc.DiadocClient");
    DiadocApi.ApiClientId = "_нашКлюч_";
    DiadocApi.ServerUrl   = "https://diadoc-api.kontur.ru:443";;
    Certificates = DiadocApi.GetPersonalCertificates();
    
    ОтпечатокСертификата = Certificates.GetItem(0).Thumbprint;
    DiadocConnection = DiadocApi.CreateConnectionByCertificate(ОтпечатокСертификата);
    
    BoxId = "ИмяНашегоЯщика@diadoc.ru";
    Organization = DiadocConnection.GetOrganizationById(BoxId);

    DocumentTask = Organization.GetDocumentsTask();
    DocumentTask.FromDocumentDate = НачалоГода(ТекущаяДата());
    DocumentTask.ToDocumentDate = КонецГода(ТекущаяДата());
    DocumentTask.Category    = "Invoice.OutboundFinished";
    DocumentList = DocumentTask.GetDocuments();
    Сч = 0;
    Пока сч < DocumentList.Count Цикл
         //тут выполняю какие-то действия с документами
Вопрос состоит в том, что Список документов всегда приходит пустым за любой интервал дат.
Соединение создается, отпечаток сертификата тот что надо, Категория документов из документации и строка фильтра построена как надо.
Метод DocumentTask.GetDocuments() отрабатывает без ошибок, но неизменно пустой(

Что я делаю не так?
1 Strogg
 
04.03.21
16:48
+ Кстати, в этом же контексте пытаюсь даже использовать метод
Document = Organization.GetDocumentById(IDДокумента) из конкретного сообщения (получаю из сообщения текущей строки на форме), тогда ругается:
invalid string position
2 mikecool
 
04.03.21
18:00
у тебя обработка работы с диадоком есть?
3 mikecool
 
04.03.21
18:02
+2 правда я на таком уровне не копал
хочешь получить список изменений по документам?
4 mikecool
 
04.03.21
18:02
на гитхабе диадока в тематической ветке задавал вопрос?
5 mikecool
 
04.03.21
18:04
и кстати - а чего не напрямую через http запрос?
6 John D
 
04.03.21
19:09
Вообще странно.
И GetDocuments(), и GetDocumentById() работают как часы. Откуда берешь IDДокумента?

И еще - без указания DocumentTask.Category пробовал?
7 mikecool
 
04.03.21
19:35
ИД документа Диадок включает в себя messageid и нуид документа
в 1с хранится в виде 64 разрядного значения
8 Strogg
 
04.03.21
20:13
(2) (3)  мне надо сохранить весь документооборот по завершенный инвойсам. После того, как получу список документов сохраню в виде зтп архива. Да, в модуле диадока и высмотрел этот saveallcontentasync()
(6) без указания категории ругается на то, что фильтр недозаполнен
(7) о! Я беру id из сообщения, из соответствующего реквизита. Это что за ид? И где взять второй?
9 mikecool
 
04.03.21
22:55
(8) при встройке модуля диадоку в конфигурацию ве идентификаторы идут как доп свойства
10 mikecool
 
04.03.21
22:57
+9 ИДДокументаДиадок, ИДСчетФактураДиадок и какой то еще
вот они - два гуида в 64ричном представлении, в обработке есть функции преобразования туда и обратно
11 Strogg
 
05.03.21
09:32
(10) спасибо. Только у нас модуль диадока не встроен, и встраивать его не будут. У нас есть только модуль EDI. Там есть справочник сообщений, где есть реквизит ID сообщения. КАк раз его я и брал
12 Strogg
 
05.03.21
10:25
Блин, открыл сообщение через редактор реквизитов, у него оказывается в ТЧ Дополнительных реквизитов есть еще два гуида: OriginalId и BoxId. Щас буду играться с ними. (9) Спасибо еще  раз за на_водку)