Имя: Пароль:
1C
1С v8
Структура объекта не соответствует типу
0 PsyTech
 
14.09.17
11:12
Всем привет!

При вызове метода сервиса получаю сообщение "Структура объекта не соответствует типу".
Структура объекта XDTO соответствует типу входного параметра, а 1с сравнивает структуру этого объекта с типом выходного параметра, естественно они не соответствуют. От чего так может быть?
1 PsyTech
 
14.09.17
11:17
*с типом возвращаемого значения
2 PsyTech
 
14.09.17
11:51
Т.е. На вход методу сервиса подаю параметр в соответствии с типом входного по WSСсылке, а туда как будто ожидается параметр с типом возвращаемого значения.
3 catena
 
14.09.17
12:00
(2)Где размещен сервис, откуда запрашивается, чем подкреплены такие выводы?
4 PsyTech
 
14.09.17
12:03
Через SOAP UI сервис нормальные ответы возвращает. Может я не понимаю смысыл этого сообщения? О чем оно? О том, что я на вход что-то не то передаю, или возврат не соответствует схеме?
5 PsyTech
 
14.09.17
12:06
хотя, ответ соответствует схеме...
6 catena
 
14.09.17
12:09
(4)У порядочного веб-сервиса возврат не может не соответствовать схеме. Чем запрос формируется? Через wsОпределения или вручную сбор хмл?
7 PsyTech
 
14.09.17
12:16
(6) Через wsОпределения, т.е. четко по схеме.
Почему 1с сравнивает входной параметр с типом возвращаемого значения?
8 PsyTech
 
14.09.17
12:20
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}OneC_Respose - [1,330]
Проверка дополнительного свойства:
    форма: Элемент
    имя: OPERATIONID
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}OneC_Respose

OPERATIONID - это поле из возвращаемого значения. Причем тут оно?
9 PsyTech
 
14.09.17
13:25
не оставляйте меня тут одного!))
10 catena
 
14.09.17
13:27
(9)Мало информации. Структуры вс нет, кода нет, обсуждать пока нечего.
11 PsyTech
 
14.09.17
13:29
почему-то подумал, что этого достаточно
12 PsyTech
 
14.09.17
13:33
Вот кодик:
    Прокси = WSСсылки.SAP_Product.СоздатьWSПрокси(URI, ИмяСервиса, ИмяПорта);
    Прокси.Пользователь = login;
    Прокси.Пароль = password;
    
    ТипWSПараметра = Прокси.ФабрикаXDTO.Тип(URIПространстваИмен, Имя);
    WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
    Меркурий.ИнициализироватьОбъектXDTO(WSПараметр, Прокси.ФабрикаXDTO);

    WSПараметр.localTransactionId = localTransactionId;
    WSПараметр.initiator.login = login;
    WSПараметр.enterprise.guid = guidПлощадки;
    WSПараметр.productionOperation.operationId = operationId;
    
    Ответ = Прокси.RegisterProductionOperation(WSПараметр);
13 PsyTech
 
14.09.17
14:27
А так получаю ошибку 500

    xmlHttp = Новый COMОбъект("Microsoft.XMLHTTP");  
    xmlHttp.OPEN("POST", URI, 0, login, password);
    xmlHttp.setRequestHeader("User-Agent", "1C Soap toolkit");
    xmlHttp.setRequestHeader("Content-type","content-type    text/xml; charset=utf-8");
    xmlHttp.setRequestHeader("Content-Length", СтрДлина(MessageExchange));
    xmlHttp.setRequestHeader("SOAPAction", "http://sap.com/xi/WebService/soap1.1";);
    xmlHttp.SEND(MessageExchange);
14 PsyTech
 
14.09.17
14:54
Было у кого такое, чтоб сторонний сервис через SOAP IU работал, а через 1с нет?
15 PsyTech
 
14.09.17
16:04
Может кто хотя бы может логику сообщения о ошибке пояснить?
Структура какого объекта не соответствует типу? Который передаю на вход? Почему тогда в тексте ошибки поле из возвращаемого значения?
Программист всегда исправляет последнюю ошибку.