Имя: Пароль:
1C
 
Вопрос по веб сервису
,
0 wmzdeadman
 
18.05.15
15:50
Получаю следующую ошибку, не пойму куда копать
{Форма.Форма(29)}: Ошибка при вызове метода контекста (GetOstatki)
    Ответ = Соединение.GetOstatki(ПолучитьОстатки);
по причине:
Ошибка вызова операции сервиса:  {http://sela.ru/webservices/}:ws_ostatki:GetOstatki()
по причине:
Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [1,557]
Проверка дополнительного свойства:
    форма: Элемент
    имя: {http://www.w3.org/2001/XMLSchema}element
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [1,557]
Проверка дополнительного свойства:
    форма: Элемент
    имя: {http://www.w3.org/2001/XMLSchema}element
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://www.w3.org/2001/XMLSchema}anyType

по причине:
Несоответствие типов XDTO:
Тип '{http://www.w3.org/2001/XMLSchema}anyType' не соответствует типу '{http://www.w3.org/2001/XMLSchema}topLevelElement'
Тип свойства не соответствует типу значения


вот кусок схемы:
http://pastebin.com/eudz1jfQ

ну и сам код

Определение = Новый WSОпределения(Адрес);
Соединение = Новый WSПрокси(Определение, URIПространстваИмен, ИмяСервиса, ИмяСервиса + "Soap");
ТипПолучитьОстатки     = Соединение.ФабрикаXDTO.Тип("http://xxx.ru/webservices/";, "GetOstatki");
    ПолучитьОстатки     = Соединение.ФабрикаXDTO.Создать(ТипПолучитьОстатки);
    
    ПолучитьОстатки.article = "5133";
    ПолучитьОстатки.kodMag     = "935";
    ПолучитьОстатки.secret     = "xxx";
    
    Ответ = Соединение.GetOstatki(ПолучитьОстатки);
1 wmzdeadman
 
18.05.15
15:56
<s:element name="GetOstatkiResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetOstatkiResult">
<s:complexType>
<s:sequence>
<s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema"; processContents="lax"/>
<s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax"/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>


Что должен вернуть метод?
Что за namespace="urn:schemas-microsoft-com:xml-diffgram-v1"
2 wmzdeadman
 
18.05.15
15:59
Поиск по данной ошибке
Несоответствие типов XDTO:
Тип '{http://www.w3.org/2001/XMLSchema}anyType' не соответствует типу '{http://www.w3.org/2001/XMLSchema}topLevelElement'
Тип свойства не соответствует типу значения

ни к чему не привел, я правильно понимаю что ответ от сервиса не может сериализоваться в объект xdto?
3 Fragster
 
гуру
18.05.15
16:14
поставь SoapUI и посмотри, что там возвращается
4 wmzdeadman
 
18.05.15
16:16
ну как бэ схему загрузил в конфу - видно что там за объект - но что за хрень urn:schemas-microsoft-com:xml-diffgram-v1 и почему оно ругается и на что ругается, непонятно на какой стороне ошибка.
5 Fragster
 
гуру
18.05.15
16:22
(4) теперь загрузи схему в SoapUI и глазами посмотри на XML, который тебе возвращает сервис
6 wmzdeadman
 
18.05.15
16:56
Попытался загрузить, получил ошибку
Error loading [http://www.xxxx.ru/ws_ostatki.asmx?wsdl]: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: error: Unexpected element: TAG_END  

Хотя какой апач вообще, на веб сервере стоит IIS, а апач у меня стоит локальный
7 Fragster
 
гуру
18.05.15
17:00
(6) что-то ты делаешь не так, потому что http://www.sela.ru/ws_ostatki.asmx?wsdl у меня в SoapUI загрузился
8 Serginio1
 
18.05.15
17:42
Видно не понимает она ArrayOfOstatki
Это из области http://forum.infostart.ru/forum86/topic128427/
9 Serginio1
 
18.05.15
17:45
-<s:element name="GetOstatkiResponse">


-<s:complexType>


-<s:sequence>


-<s:element name="GetOstatkiResult" maxOccurs="1" minOccurs="0">


-<s:complexType>


-<s:sequence>

<s:any maxOccurs="unbounded" minOccurs="0" processContents="lax" namespace="http://www.w3.org/2001/XMLSchema"/>;

<s:any minOccurs="1" processContents="lax" namespace="urn:schemas-microsoft-com:xml-diffgram-v1"/>

</s:sequence>

</s:complexType>

</s:element>

</s:sequence>

</s:complexType>

</s:element>
10 Serginio1
 
18.05.15
17:48
При загрузке в 1С wsdl не шмогла разобрать этот тип
GetOstatkiResponse_GetOstatkiResult
11 Serginio1
 
18.05.15
17:55
А случайно вэб сервис не возврващает DataTable
http://forums.asp.net/t/1171111.aspx?Web+Service+DataTable+result+problem
12 wmzdeadman
 
19.05.15
10:16
(11) Да именно DataTable сервис возвращал. Переделали на массив структур, полет нормальный. всем спасибо.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший