Имя: Пароль:
1C
1С v8
Web-сервис: помогите найти ошибку плиз..
0 dave2000
 
11.03.15
19:31
С веб-сервисами ранее не работал, начал с простого примера по этой ссылке http://www.odincplus.com/stati-programmistam/veb-servysy-v-1s.html

Уперся в тупик, почему-то в результате запроса возвращается только строчка Товар, а должна бы по идее со свойствами (Код и Наименование). Вот скрины из 1С и SoapUI:

http://i.piccy.info/i9/52eb45532dfa1e92f91893a5b584c9b9/1426091395/64916/881839/Screenshot_1.png
http://i.piccy.info/i9/47becf6b0ee95da2604ac7b6f6e3d75c/1426091425/171522/881839/Screenshot_2.png

Где ошибка?
1 dave2000
 
11.03.15
20:55
Перенес процедуру во внешнюю обработку для отладки.


&НаСервере
Процедура ТестXDTOНаСервере()
    
    // получим типы из XDTO
    ТипXDTOРезультатОперации  = ФабрикаXDTO.Тип("http://www.sample-package.org";, "РезультатОперации");
    ТипXDTOСвойства           = ФабрикаXDTO.Тип("http://www.sample-package.org";, "Свойства");
    // создадим значение XDTO для свойства
    XDTOСвойства   = ФабрикаXDTO.Создать(ТипXDTOСвойства);

    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        // создадим значение XDTO для результата
        XDTOПозиции = ФабрикаXDTO.Создать(ТипXDTOРезультатОперации);
        // заполним результат
        ЗаполнитьЗначенияСвойств(XDTOПозиции, Выборка);
        // добавим результат в товары
        XDTOСвойства.Товар.Добавить(XDTOПозиции);

    КонецЦикла;
КонецПроцедуры


Стопорнул в отладчике посреди цикла на ЗаполнитьЗначенияСвойств(), вижу такую картину:

Переменная "Выборка" имеет тип ссылки на справочник Номенклатура, у которого есть строковые Код и Наименование.
Переменная "XDTOПозиции" имеет тип ОбъектXDTO, у которого есть поля Код и Номенклатура типа СписокXDTO (список элементов ОбъектXDTO).

Как теперь заполнить свойства ОбъектXDTO Код и Номенклатура их текстовыми представлениями из номенклатуры?
2 dave2000
 
11.03.15
21:00
Схема XDTO пакета в конфигурации:




<xs:schema xmlns:tns="http://www.sample-package.org"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://www.sample-package.org"; attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xs:complexType name="РезультатОперации">
        <xs:sequence>
            <xs:element name="Код" type="xs:string" maxOccurs="unbounded"/>
            <xs:element name="Наименование" type="xs:string" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Свойства">
        <xs:sequence>
            <xs:element name="Товар" type="tns:РезультатОперации" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
3 koreav
 
11.03.15
22:09
можно заполнять через точку, но вначале максимальное количество свойства(у кода и наименования) нужно поставить 1
4 Fragster
 
гуру
11.03.15
22:47
(2) почему у тебя у кода и наименования максимальное количество -1? поставь 1 и все заработает...
5 dave2000
 
12.03.15
10:47
(3) (4) Точно! поменял, заработало, спасибо!

Думал, что -1 означает неограниченное максимальное количество. Или это справедливо только для объектных типов (таких, как "РезультатОперации" в данном примере)? А для простых типов (описанных в http://www.w3.org/2001/XMLSchema) минимальное и максимальное количество всегда должно быть 1, я правильно понял?
6 Fragster
 
гуру
12.03.15
14:41
(5) все правильно, но зачем тебе в одном объекте РезультатОперации бесконечное количество наименований и кодов?
7 vi0
 
12.03.15
14:52
(5) -1 это СПИСОК с неограниченным количеством элементов
8 dave2000
 
13.03.15
11:37
(6) (7) Теперь понял, спасибо)