Имя: Пароль:
1C
1С v8
Возвращается XDTO объект вместо XDTO список в результате вызова веб сервиса
0 pandrew1
 
10.01.16
20:53
Коллеги! Опять мозг плавиться!
Почему в результате вызова веб сервиса возвращается XDTO объект, а не список, если в списке один элемент?
Ответ сервиса:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:tns="http://doctor-plus.su/ws/">;
<SOAP-ENV:Body>
<ns1:getPersonsResponse xmlns:ns1="http://doctor-plus.su/ws/">;
<return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Person[1]">
<item xsi:type="tns:Person">
<name xsi:type="xsd:string">kisa</name>
<age xsi:type="xsd:int">22</age>
<gender xsi:type="xsd:string">female</gender>
</item>
</return>
</ns1:getPersonsResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

В ответе четко видно массив из одного элемента.
Результат = Прокси.getPersons();

Результат.list - объект XDTO.
Почему не список XDTO???
Если метод возвращает несколько элементов, то результат.list - список XDTO как и ожидается.
1 pandrew1
 
10.01.16
20:56
2 Asmody
 
10.01.16
21:00
(0) потому что это так и должно быть.
3 pandrew1
 
10.01.16
21:06
хм... и что тогда анализировать  тип значения Результат.list только остается?
Если объект XDTO, то это сам элемент - обрабатываем,
если список XDTO, то список - идем по списку.
гыгыгы, надо глянуть, что будет если в ответ пустой список придет.

Коллега, не могли бы вы обосновать свое мнение?
Я все-таки считаю, что должен быть список содержащий просто один элемент.
4 rozer76
 
10.01.16
21:11
(3) да потребуй владельца вебсервиса всегда список возвращать...делов то )
5 pandrew1
 
10.01.16
21:22
Если список пустой, то и вовсе неопределенный XDTO объект возвращается.

Ну сервис то вроде как правильно возвращает.
Сначала ответ, потом список, а далее элементы.

Это мне кажется при разборе ответа сервиса 1С неверно отрабатывает.

Какой должен быть ответ сервиса чтоб 1с корректно определяла ситуации: нет элементов - пустой список XDTO, один элемент - список XDTO состоящий из одного XDTO объекта, несколько - список XDTO состоящий из XDTO объектов?
6 DES
 
10.01.16
22:24
Сам проверяй, через Попытку и ТипЗнч
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.