Имя: Пароль:
1C
1С v8
Ошибка при попытке добавить ЗначениеXDTO в СписокXDTO
0 Admin_Net_1C
 
24.03.21
11:14
Добрый день народ.
Суть проблемы: есть спецификация веб-сервиса WSDL (см. https://ibb.co/jrXRc1j). Я создаю значение XDTO и пытаюсь добавить в список XDTO


// мПараметрыМетодов_.ПространстваИменСервиса = "http://resurs-media.ru/api"

лТипMaterialGroup_Tab = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Тип(мПараметрыМетодов_.ПространстваИменСервиса, "MaterialGroup_Tab");
MaterialGroup_Tab = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Создать(лТипMaterialGroup_Tab);

лТипMaterialGroup = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Тип(мПараметрыМетодов_.ПространстваИменСервиса, "MaterialGroup");
MaterialGroup = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Создать(лТипMaterialGroup, "AAA");

MaterialGroup_Tab.Item.Добавить(MaterialGroup);


и получаю ошибку:
Несоответствие типов XDTO:
Тип '{http://resurs-media.ru/api}MaterialGroup' не соответствует типу ''
Тип свойства не соответствует типу значения

Подскажите, что не так делаю?
1 Admin_Net_1C
 
24.03.21
11:16
(0) правильная ссылка на картинку: https://ibb.co/jrXRc1j
2 Fragster
 
гуру
24.03.21
11:21
у тебя там внутри лТипMaterialGroup_Tab должны лежать какой-то Item (его тип можно подсмотреть внутри типа списка XDTO), внутри которого уже MaterialGroup
3 Fragster
 
гуру
24.03.21
11:22
*должны лежать какие-то
4 Admin_Net_1C
 
24.03.21
11:25
(2) дак в схеме нет описания типа Item и как его в этом случае получать/создавать ?
5 Admin_Net_1C
 
24.03.21
11:29
(2) и разве Item это не свойство объекта MaterialGroup_Tab типа коллекция (СписокXDTO) ?
6 Admin_Net_1C
 
24.03.21
11:30
7 Fragster
 
гуру
24.03.21
11:50
(4) из типа свойств MaterialGroup_Tab
(5) да, его тебе надо положить в MaterialGroup_Tab в итоге, а наполнить объектами типа Item, у которого будет уже свойство MaterialGroup типа MaterialGroup
8 Admin_Net_1C
 
24.03.21
11:56
(7) не пониманию. На рисунке из (1) видно, что

<xs:complexType name="MaterialGroup_Tab">
  <xs:sequence>
    <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="MaterialGroup" type="tns:MaterialGroup" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

т.е. тип свойства MaterialGroup_Tab - это последовательность элементов с именем Item. А про описание типа Item в схеме ничего нет (
9 Admin_Net_1C
 
24.03.21
12:06
Если пытаюсь получить тип Item:

лТипItem = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Тип(мПараметрыМетодов_.ПространстваИменСервиса, "Item");

то лТипItem = Неопределено.

Если пытаюсь:

лТипMaterialGroup = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Тип(мПараметрыМетодов_.ПространстваИменСервиса, "MaterialGroup");
MaterialGroup = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Создать(лТипMaterialGroup, пIDГруппы);
//MaterialGroup_Tab.Item.Добавить(MaterialGroup);
MaterialGroup_Tab.Добавить("Item", MaterialGroup);

то ошибка:
Несоответствие типов XDTO:
Тип '{http://resurs-media.ru/api}MaterialGroup_Tab' не найден
Тип объекта не является открытым
10 Fragster
 
гуру
24.03.21
12:09
(9) это тип свойства Item объекта MaterialGroup_Tab, его можно получить из MaterialGroup_Tab.Тип().Свойтсва или как-то так, см. отладчиком
11 Admin_Net_1C
 
24.03.21
12:28
(9) попытался на основе вашей подсказки получить тип Item https://ibb.co/vHG8MQY


лТип = мПараметрыМетодов_.Прокси.ФабрикаXDTO.Тип(Новый ТипДанныхXML(MaterialGroup_Tab.Тип().Свойства[0].Имя, MaterialGroup_Tab.Тип().Свойства[0].URIПространстваИмен))

// лТип = Неопределено
12 Fragster
 
гуру
24.03.21
12:42
(11) там уже готовый тип, который можно в ФабрикаXDTO.Создать пихать, сам тип можно не создавать
13 Fragster
 
гуру
24.03.21
12:46
MaterialGroup_Tab.Тип().Свойства[0].Тип
14 Admin_Net_1C
 
24.03.21
12:52
(13) Получилось. Спасибо!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn