Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ФабрикаXDTO, как правильно описать вложенные типы?

ФабрикаXDTO, как правильно описать вложенные типы?
Я
   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. Вопрос собственно как правильно описать вложенные типы?
 
 
   PaulBC
 
1 - 29.01.20 - 08:12
Так параметр функции - это wsInqHead - список, элементы которого wsInqHeadRow. Т. е. нужно создать wsInqHead, добавить в него wsInqHeadRow, а wsInqHead уже передавать в функцию. Тоже самое с остальными параметрами, как я понял.
   бегинер
 
2 - 29.01.20 - 08:24
Загрузить = Прокси.inquiry(ID.sessionId,wsInqHeadRow ,wsInqLineRow,wsInqTextRow); 

не видно в коде где устанавливаешь ID.sessionId - может из-за него ругается....
   grenadier
 
3 - 29.01.20 - 08:39
(1) будем пробовать, спасибо
   grenadier
 
4 - 29.01.20 - 08:40
(2)ID.sessionId есть, не весь код просто привёл
   VikKup
 
5 - 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;

Ну и так далее
   VikKup
 
6 - 29.01.20 - 09:47
(5) Если тип Array, то wsInqHead.wsInqHeadRow=wsInqHeadRow меняешь на wsInqHead.wsInqHeadRow.Добавить(wsInqHeadRow);
   grenadier
 
7 - 29.01.20 - 10:38
(6) разобрался вроде,получается взять цену,  всем спасибо!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.