Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка при попытке добавить ЗначениеXDTO в СписокXDTO

Ошибка при попытке добавить ЗначениеXDTO в СписокXDTO
Я
   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' не соответствует типу ''
Тип свойства не соответствует типу значения

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

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

// лТип = Неопределено

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.