|
ФабрикаXDTO, как правильно описать вложенные типы? | ☑ | ||
---|---|---|---|---|
0
grenadier
29.01.20
✎
07:59
|
Доброго времени суток! прошу помощи в разрешении вопроса.
Существует сервис поставщика, по которому можно получить цену номенклатуры.Пишу запрос в SOAP UI, выглядит запрос как на картинке, обязательные параметры это токен, код клиента, имя клиента и код номенлатуры. https://ibb.co/GcCVWGT Типы: https://ibb.co/LvkT5MV Функция: https://ibb.co/zR6FX4T В программе SOAP UI всё отправляется и всё получается как надо. Далее создаю обработку для провекри работы непосредственно в 1С. Код такой: Процедура КнопкаВыполнитьНажатие(Кнопка) Прокси = WSСсылки.TVH.СоздатьWSПрокси("http://service.webservices.tvh.com", "TvhwsService", "TvhwsServiceHttpSoap12Endpoint" ); ID = Прокси.login("Тут логин","тут пароль"); ТипwsInqHeadRow = Прокси.ФабрикаXDTO.Тип("http://struct.webservices.tvh.com/xsd","Inquiry_WSInqHeadRow"); wsInqHeadRow = Прокси.ФабрикаXDTO.создать(ТипwsInqHeadRow); wsInqHeadRow.customerCode = "тут код клиента"; wsInqHeadRow.customerContactName = "тут имя клиента"; ТипwsInqLineRow = Прокси.ФабрикаXDTO.Тип("http://struct.webservices.tvh.com/xsd","Inquiry_WSInqLineRow"); wsInqLineRow = Прокси.ФабрикаXDTO.Создать(ТипwsInqLineRow); wsInqLineRow.partNumber = "тут код номенлатуры"; wsInqLineRow.lineNumber = 0; wsInqLineRow.makeCode = ""; wsInqLineRow.quantity = 0; wsInqLineRow.customerPartNumber = ""; ТипwsInqTextRow = Прокси.ФабрикаXDTO.Тип("http://struct.webservices.tvh.com/xsd","Inquiry_WSInqTextRow"); wsInqTextRow = Прокси.ФабрикаXDTO.Создать(ТипwsInqTextRow); Загрузить = Прокси.inquiry(ID.sessionId,wsInqHeadRow ,wsInqLineRow,wsInqTextRow); КонецПроцедуры в итоге ошибка: Ошибка вызова операции сервиса: {http://service.webservices.tvh.com}:TvhwsService:inquiry() по причине: Неверный формат. Подозреваю, что ошибка возникает по причине что тип wsInqHeadRow вложен в wsInqHead. Вопрос собственно как правильно описать вложенные типы? |
|||
1
PaulBC
29.01.20
✎
08:12
|
Так параметр функции - это wsInqHead - список, элементы которого wsInqHeadRow. Т. е. нужно создать wsInqHead, добавить в него wsInqHeadRow, а wsInqHead уже передавать в функцию. Тоже самое с остальными параметрами, как я понял.
|
|||
2
бегинер
29.01.20
✎
08:24
|
Загрузить = Прокси.inquiry(ID.sessionId,wsInqHeadRow ,wsInqLineRow,wsInqTextRow);
не видно в коде где устанавливаешь ID.sessionId - может из-за него ругается.... |
|||
3
grenadier
29.01.20
✎
08:39
|
(1) будем пробовать, спасибо
|
|||
4
grenadier
29.01.20
✎
08:40
|
(2)ID.sessionId есть, не весь код просто привёл
|
|||
5
VikKup
29.01.20
✎
09:42
|
ТипwsInqHeadRow = Прокси.ФабрикаXDTO.Тип("http://struct.webservices.tvh.com/xsd","Inquiry_WSInqHeadRow";);
wsInqHeadRow = Прокси.ФабрикаXDTO.создать(ТипwsInqHeadRow); wsInqHeadRow.customerCode = "тут код клиента"; wsInqHeadRow.customerContactName = "тут имя клиента"; добавляешь ТипwsInqHead = Прокси.ФабрикаXDTO.Тип("http://struct.webservices.tvh.com/xsd","Inquiry_WSInqHead";); wsInqHead = Прокси.ФабрикаXDTO.создать(ТипwsInqHead); wsInqHead.wsInqHeadRow=wsInqHeadRow; Ну и так далее |
|||
6
VikKup
29.01.20
✎
09:47
|
(5) Если тип Array, то wsInqHead.wsInqHeadRow=wsInqHeadRow меняешь на wsInqHead.wsInqHeadRow.Добавить(wsInqHeadRow);
|
|||
7
grenadier
29.01.20
✎
10:38
|
(6) разобрался вроде,получается взять цену, всем спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |