Не могу заставить работать Web сервис, ошибка XDTO #456622


#0 by Balansse
Здравствуйте! Надеюсь на вашу помощь, бьюсь безрезультатно уже который день, как в стену уперся ( Ситуация такая. Есть сайт, предоставляющий веб сервис рассылки смс, адрес WSDL пакета таков: Создаю в конфигурации объект "WS-Ссылка", все создается без проблем. Необходимо реализовать работу с этим сервисом из 1С. Написал простенькую обработочку, которая обращается к функции GetCurrentCredit этого веб сервиса. После запуска 1С думает и выкидывает вот такую вот ошибку: {Обработка.Обработка2.Форма.Форма}: Ошибка при вызове метода контекста (GetCurrentCredit): Ошибка вызова операции сервиса:  {    Результат = Прокси.GetCurrentCredit(Логин); по причине: Ошибка вызова операции сервиса:  { по причине: Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: { - [1,179] Проверка дополнительного свойства:    форма: Элемент    имя: amount по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: { - [1,179] Проверка дополнительного свойства:    форма: Элемент    имя: amount по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: { Причем ошибка не зависит от того, присваиваю ли я возвращаемый результат чему-то (в данном случае переменной Результат) или нет. Не зависит и от того, какие логин и пароль передаю. Возникает впечатление, что 1С просто не может обработать ответ с сервера... Что-то можно сделать? Может я что-то делаю не так? Очень прошу помощи, не первый день уже бьюсь с этой дрянью :(
#1 by Balansse
up
#2 by Mitriy
ошибка в веб-сервисе у тебя скорее всего... проверь, какой тип возвращает и как он описан в пакете...
#3 by Mitriy
млин... невнимательно прочитал сабж...
#4 by Balansse
Web сервис не мой, он предоставляется извне, и менять я его не могу. Разработчики заявляют что с C# он работает без проблем. Может я что то не так определяю в обработке? Или это кривые руки девелоперов сервиса? Сразу говорю, сервис не 1Совский.
#5 by Mitriy
а зачем вот это? ПараметрТип = Фабрика.Тип("http://soap.ecm.emotion.com/","GetCurrentCredit"); ты ничего больше не забыл? и это тоже непонятно
#6 by Balansse
Это просто я делал много попыток, чтобы заработало, забыл убрать. ДА и объявление результата тоже не нужно, но это не влияет на результат. Просто пытался уже подходить со всех сторон.
#7 by Balansse
Up
#8 by Mitriy
через прокси работаешь? у меня было похожее, прокси мешал...
#9 by Balansse
А как обойти проблему? Интернет в офисе раздается через прокси, это да. Пробовал дома, дома прокси нет (интернет раздается через рутер), возникла та же проблема. Может тогда дело не в прокси?
#10 by Balansse
Up
#11 by sergeystav
Что-то достучаться до не могу
#12 by sergeystav
функция имеет параметры? может их больше или меньше? тип параметра - строка?
#13 by Balansse
Функция GetCurrentCredit имеет один параметр auth. Это структура со строчными параметрами username и password. Система не ругается на недопустимый параметр, она почему то ругается на возвращаемое значение этой функции, которое имеет тип result.
#14 by sergeystav
при выполнении функции сервиса, может возникать внутренняя ошибка. тут сервис в натуре пощупать надо, а доступа к нему нету
#15 by Balansse
У них похоже сервак лежал. Уже есть доступ. Работал с этим сервисом через сайт - все работает. Через 1с - не хочет.
#16 by Balansse
Up
#17 by AquaKosh
Раньше 1С-ка не дружила с web-сервисами на Java...
#18 by Balansse
Разработчик заявляет, что сервис писался на .NET
#19 by acsent
Попробуй ответный xml сохранить в файл. И открыть его в фабрике
#20 by acsent
#21 by Balansse
А как сохранить ответ в файл? Ваш код, я так понимаю, читает уже сохраненный XML.
#22 by Balansse
Up
#23 by Balansse
Up
#24 by Balansse
Up
#25 by Balansse
Нужна помощь, не знаю в какую сторону копать. Если это глюк 1С (несостыковка со сторонним сервисом), как реализовать работу с этим веб сервисом сторонними средствами? Главное чтобы работало все через 1С
#26 by Vugluskr
Скорее глюк этого вебсервиса, проверь получится ли у тебя вебсервисом аэрофлота работать.
#27 by Balansse
С вебсервисом могу работать через сторонние средства, например такие как Аэрофлот проверить не могу, надо просить админа добавить мне его в разрешенный список... Даже если он заработает, что это мне даст? Может можно как то сохранить ответный XML в файл, и вручную его обрабатыватть? Или вручную формировать XML и отправлять на сервер. Только как это реализовать? Вопрос критичен, к сожалению, в пятницу уже надо сдать рабочую версию, а решения все нет :(
#28 by Vugluskr
В браузере по ссылке ничего не вижу. А должен был получить wsdl. Не работает вебсервис?
#29 by Vugluskr
Упс.. нагнал - ff все показал, хром меня ввел в заблуждение.
#30 by DmitrO
хм.. а у меня выдает это: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: { Ошибка преобразования данных XDTO: Чтение объекта типа: { - [1,217] Проверка дополнительного свойства: форма: Элемент имя: comment Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: { - [1,217] Проверка дополнительного свойства: форма: Элемент имя: comment Ошибка вызова операции сервиса: { Ошибка вызова операции сервиса: { Ошибка при вызове метода контекста (GetCurrentCredit): Ошибка вызова операции сервиса: {
#31 by DmitrO
Вобщем 1С не может принять результат потому что он не соответствует схеме. Элемент amount (на который 1С ругается в ) находится раньше значит его проверка проходит нормально. Элемент comment задан в схеме как не обязательный и тип у него простая строка. Вобщем без SOAP отладчика тут неразобраться (на худой конец просто сниффер пакетов).. :) надо смотреть голый xml который приходит с сервера. В отладочных целях можно также сэмулировать SOAP запрос объектом HTTPСоединение и собственно получить сырой ответ от сервака. Вобщем до ответа в виде XML добраться надо.
#32 by Balansse
вот какой должен быть ответ в сыром виде с сервера: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:GetCurrentCreditResponse xmlns:ns2="http://soap.ecm.emotion.com/"><return type="ok"><amount>10.0</amount></return></ns2:GetCurrentCreditResponse></soap:Body></soap:Envelope>
#33 by DmitrO
В приведенном примере ответа отсутствует элемент recipient. По схеме он должен быть хотя бы один.
#34 by Balansse
Ну так не на него же ругается... Да и зачем в итоге серверу возвращать пустую инфу, если он просто возвращает то, что у него попросили?
#35 by DmitrO
Да, не на него. А то что в это именно то что возвращает сервер по твоему запросу? А тут логику искать не надо, надо просто чтобы все соответствовало схеме.
#36 by Широкий
У тебя код остался таким же как и в ?
#37 by Balansse
Тот сырой XML текст, что я привел, это ответ сервера на функцию GetCurrentCredit. Получено с помощью сайта, что я приводил выше.
#38 by Balansse
Up
#39 by Balansse
>>Может можно как то сохранить ответный XML в файл, и вручную его обрабатыватть? Или вручную формировать XML и отправлять на сервер. Только как это реализовать? Вопрос критичен, к сожалению, в пятницу уже надо сдать рабочую версию, а решения все нет :(
#40 by Balansse
Up
#41 by Serginio1
У меня была проблема с отладкой Вэб сервиса при передаче структуры. Если объявить через LocflHOST на сервере, то структура проходит. Если с другого компютера через глобальный адрес то метод ложится с ошибкой преобразования во втором байте чего то там.
#42 by Balansse
Up
#43 by Serginio1
Сделай на тоже Net или нативе Delphi или С++  Оле Объект который будет обращаться к серверу
#44 by xzorkiix
много букв. как я курил веб сервисы и их дружбу с 1С. шаг первый - проверить сервис на одыкватность - использую soapUI 3.0 бесплатное. Удобное шаг второй - при условии что выполнен первый - начинаем курить 1С. импортируем в 1С сервис (это раз). Даже на этом этапе можно увидеть дружит 1С или нет с этим сервисом. Хоть и стандарт обще принятый, но то что курят одни системы 1С на отказ не курит. домой приду попробую курнуть.
#45 by xzorkiix
кстати тож не могу получить тот самы wdsl =/  Proxy Encountered Error Connection Timeout: Could not contact the remote server. Possible causes include mistyped URL, transient network problems, overloaded remote server, and misconfigured proxy server. хотя может и рабочая прокся пьет. так что с дому гляну
#46 by xzorkiix
Ошибка при вызове метода контекста (GetCurrentCredit): Ошибка вызова операции сервиса:  { Есть нормальное описание работы сервиса и методов, а не только вашего представления ? код для затравки (wdsl принят в конфу как ws-ссылка "WS") Функция СоздатьПрокси(знач ИмяWS = "WS",
#47 by xzorkiix
Спалил малость свои переменный =)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С