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

Ошибка при оправке запроса GenerateTitleXml

Open den-bessal opened this issue 3 years ago • 9 comments

При отправке запроса для генерации титула покупателя получаю ошибку:

Diadoc.Api.Http.HttpClientException: BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/GenerateTitleXml?boxId=c0640b8d8d7340b38fb7c078673fe9de%40diadoc.ru&documentTypeNamedId=UniversalCorrectionDocument&documentFunction=%D0%9A%D0%A1%D0%A7%D0%A4%D0%94%D0%98%D0%A1&documentVersion=ucd_05_01_03&titleIndex=1&editingSettingId&letterId=917d0568-30a1-4b16-a919-ec6a256917b3&documentId=808bb041-83ed-4017-9884-4e4820d8b389, AdditionalMessage=Invalid data UserContractData: Line: 2, Position: 2, /UniversalTransferDocumentBuyerTitle[1]: The 'UniversalTransferDocumentBuyerTitle' element is not declared., StatusCode=BadRequest, DiadocErrorCode: Http.BadRequest ---> System.Net.WebException: Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.

Выяснил, что УПД имеет версию "utd820_05_01_01_hyphen". После чего нашел это: https://github.com/diadoc/diadocsdk-csharp/issues/652. Где рекомендуется переходить на hyphens и соответствующие пространства имен. Но речь идет об отправке УПД, а мне необходимо подписать его.

Каким образом это сделать? В пространстве имен Diadoc.Api.DataXml.Utd820.Hyphens не нахожу подходящего класса для замены Diadoc.Api.DataXml.Utd820.UniversalTransferDocumentBuyerTitle

den-bessal avatar Apr 22 '21 08:04 den-bessal

Уважаемый, а то что для генерации титула покупателя вы передаете тип документа УКД вас не смущает? documentTypeNamedId=UniversalCorrectionDocument? да и судя по телу , UserContractData у вас тоже неверен. XSD-схема контракта, необходимого для генерации титула, может быть получена с помощью ссылки, доступной в поле UserDataXsdUrl контракта DocumentTitle, который можно получить с помощью метода-справочника GetDocumentTypes. пример можно взять отсюда.... но там старые методы. https://github.com/diadoc/diadocsdk-csharp/issues/532

alexxxwam avatar Apr 22 '21 13:04 alexxxwam

@alexxxwam, я уже начал путать УКД с УПД. Прошу прощения, получается при отправке УКД ошибка. Я не составлял титулы "руками" и не использовал XSD-схемы, а пользовался классами которые есть в SDK. Согласно этой документации: https://api-docs.diadoc.ru/ru/latest/proto/utd/UniversalTransferDocumentBuyerTitleInfo.html для подписания УПД и УКД используется класс UniversalTransferDocumentBuyerTitleInfo, который я собственно и использую. Для генерации использовался метод GenerateTitleXml, в который версию и прочие данные передавались из документа как есть + заполненный UniversalTransferDocumentBuyerTitleInfo.

den-bessal avatar Apr 22 '21 14:04 den-bessal

@alexxxwam, я уже начал путать УКД с УПД. Прошу прощения, получается при отправке УКД ошибка. Я не составлял титулы "руками" и не использовал XSD-схемы, а пользовался классами которые есть в SDK. Согласно этой документации: https://api-docs.diadoc.ru/ru/latest/proto/utd/UniversalTransferDocumentBuyerTitleInfo.html для подписания УПД и УКД используется класс UniversalTransferDocumentBuyerTitleInfo, который я собственно и использую. Для генерации использовался метод GenerateTitleXml, в который версию и прочие данные передавались из документа как есть + заполненный UniversalTransferDocumentBuyerTitleInfo.

все просто - при формировании титула покупателя вам нужно указывать тот тип документа , на который вы делаете ответку ( Если был УПД , значит вам нужно в метод генерации передавать UniversalTransferDocument с корректными функцией и версией), для документа УКД тоже самое.

попробуйте найти тут сам алгоритм , но там надо учесть , что старые методы . https://github.com/diadoc/diadocsdk-csharp/issues/532

alexxxwam avatar Apr 22 '21 14:04 alexxxwam

попробуйте найти тут сам алгоритм , но там надо учесть , что старые методы . #532

Собственно от туда я и брал решение. И данное решение работало.

den-bessal avatar Apr 22 '21 14:04 den-bessal

попробуйте найти тут сам алгоритм , но там надо учесть , что старые методы . #532

Собственно от туда я и брал решение. И данное решение работало.

гляньте структуру тут https://www.diadoc.ru/docs/forms/ukd/structure/10 на выходе у вас должен был файл в таком формате как на вкладке ON_NKORSCHFDOPPOK, можете сформировать его своим решением.

alexxxwam avatar Apr 22 '21 15:04 alexxxwam

У меня те же вопросы, что и у автора из https://github.com/diadoc/diadocsdk-csharp/issues/532 ))

Не понятно, если есть sdk, есть типизированные данные, зачем заполнять какой-то файл, скачать какую-то схему...все какое-то... возмущению нет предела!!! В прошлой версии все работало нормально, ничего значительно не изменилось, зачем в коде такие перемены?

Описание от пользователей... Где примеры от разработчиков?

den-bessal avatar Apr 23 '21 06:04 den-bessal

У меня те же вопросы, что и у автора из #532 ))

Не понятно, если есть sdk, есть типизированные данные, зачем заполнять какой-то файл, скачать какую-то схему...все какое-то... возмущению нет предела!!! В прошлой версии все работало нормально, ничего значительно не изменилось, зачем в коде такие перемены? Описание от пользователей... Где примеры от разработчиков?

я думаю , что в силу постоянно меняющихся правил заполнения и добавления данных для разных типов и версий документов от нашей горячо-любимой ФНС , разработчики просто отказались от готовых классов , так как на это надо много ресурсов и времени и предлагают заполнять упрощенный usercontract силами самих пользователей

alexxxwam avatar Apr 23 '21 08:04 alexxxwam

@alexxxwam, вы очень точно озвучили позицию разработчиков и причины реализации такой логики

NataliaShumikhina avatar Apr 23 '21 10:04 NataliaShumikhina

@NataliaShumikhina, т.е. переложили часть своей работы (половину SDK) на плечи пользователей? "Замечательная" политика партии...

den-bessal avatar May 06 '21 05:05 den-bessal