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

Исключение при попытке скачать архив документооборота

Open dk2k opened this issue 5 years ago • 7 comments

Версия sdk 3.3.3

Стек: Diadoc.Api.exceptions.DiadocSdkException: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type. at Diadoc.Api.print.PrintFormClient.generateDocumentZip(PrintFormClient.java:111)

вызов в джава коде: DocumentZipResult result = diadocApi .getPrintFormClient() .generateDocumentZip(request.getBoxId(), request.getMessageId(), request.getDocumentId(), request.getFullDocflow());

С подставленными значениями это выглядит так: .generateDocumentZip("[email protected]", "136663de-ee59-4697-b8cb-2e6761eb200c", "1", true); (в качестве documentId передается заглушечное значение "1")

Попутный вопрос: почему с переданным флагом fullDocflow==true все равно нужно передать непустой documentId. Мне нужна вся переписка, а не конкретный документ. Почему я должен указывать документ?

dk2k avatar Jul 24 '20 09:07 dk2k

Название метода подсказывает, что он выгружает архив по документу, а не по сообщению. Для того, чтобы выгрузить архив по сообщению, вам нужно будет сделать несколько вызовов. Метода для получения архива по сообщению нет. Кажется, что после указания documentId ошибка должна уйти

i82 avatar Jul 25 '20 04:07 i82

В ЛК есть кнопка (пункт в выпадающем меню) "Скачать всю цепочку документооборота". Как точно такой же архив скачать через SDK, указав messageId? В документации есть метод https://diadoc-sdk.readthedocs.io/ru/latest/http/GenerateDocumentZip.html В его описании указано: fullDocflow: признак того, что в формируемый архив требуется добавить все файлы документооборота.

Вот мне и нужны ВСЕ файлы. Тем не менее, при пустом documentId будет исключение:

java.lang.IllegalArgumentException: documentId Diadoc.Api.print.PrintFormClient.generateDocumentZip(PrintFormClient.java:91)

изображение

Почему игнорируется значение true в параметре fullDocflow?

dk2k avatar Jul 25 '20 10:07 dk2k

Точно такой же архив можно скачать при помощи метода GenerateDocumentZip, указав boxid. messageid, documentid и fulldocflow=true. Только по messageid (без documentid) получить архив нельзя, т.к. в одном сообщении может быть несколько документов, а архив документооборота формируется только по одному документу.

NataliaShumikhina avatar Jul 27 '20 08:07 NataliaShumikhina

Попробую еще раз. В ЛК я могу скачать архив для всего сообщения. Если в сообщении 4 файла, то в архиве будет 4 папки - по одной для каждого файла: изображение Пример содержимого одной из папок: изображение

Насколько я понимаю предлагаемый вами вариант, он отличается от ЛК: мне надо будет делать четыре запроса на shelf (по одному на файл). И получу я четырех архива. Меня этот вариант не устраивает.

Как мне скачать такой же архив, как в ЛК?

dk2k avatar Jul 27 '20 13:07 dk2k

Проверил ваш совет по поводу АПИ. Действительно, в архиве скачивается оборот по одному документу: изображение изображение Поэтому остается вопрос: как скачать общий архив для всех файлов, как в ЛК?

dk2k avatar Jul 28 '20 09:07 dk2k

Добрый день!

Поэтому остается вопрос: как скачать общий архив для всех файлов, как в ЛК?

В API такого метода нет и в ближайшее время не планируется. Можем зафиксировать ваше пожелание.

aeremina88 avatar Jul 28 '20 10:07 aeremina88

Зафиксируйте, пожалуйста. Учитывая, что это требование вашего крупного клиента, я думаю, что стоит поднять приоритет до максимума.

dk2k avatar Jul 28 '20 14:07 dk2k