Имя: Пароль:
1C
1С v8
Помогите разобраться с XDTO
0 travelekb
 
16.03.20
18:04
Здравствуйте.
Помогите начинающему разобраться с механизмом XDTO. Второй день не могу понять как применить на практике, хоть и много статей прочел.

Беру простой XML файл. Нужно получить всех клиентов в тегах <client>, чтобы в дальнейшем занести их в Справочник:
https://jsfiddle.net/wgnr9zs5/

Делаю схему XML в конфигураторе, создаю тип объекта client:
http://joxi.ru/L21JoBFRjev3AX?d=1

В свойствах тип данных указываю string (http://www.w3.org/2001/XMLSchema):
http://joxi.ru/xAeXMosRn0ea2y?d=1

Далее:
ТипФабрикиXDTO = ФабрикаXDTO.Тип("https://www.myproject.ru/xdto";, "client") //вот тут я не совсем понимаю, что идет вторым параметром? тип объекта из схемы?;
    
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(Файл.ПолноеИмя);
    
Клиенты = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипФабрикиXDTO);
//тут вываливается с ошибкой
//Ошибка проверки данных XDTO:
//Структура объекта не соответствует типу: {https://www.myproject.ru/xdto}client

Что не так? Как понять этот XDTO?
1 ДенисЧ
 
16.03.20
18:46
"Структура объекта не соответствует типу"

Вроде по-русски написано ((
2 Fragster
 
гуру
16.03.20
18:48
тебе нужно сделать еще тип clients со свойством client у которого указать минимальное количество 0 максимальное -1
3 Fragster
 
гуру
16.03.20
18:49
и тип catalog со свойством clients типа clients
4 Fragster
 
гуру
16.03.20
18:49
если что, для xml есть gist.github.com
5 travelekb
 
16.03.20
20:28
(2) (3) т.е. в схеме полностью описать структуру вложенных тегов XML, верно?
<catalog>
    <clients>
        <client>
        </client>
    </clients>
</catalog>
6 travelekb
 
16.03.20
20:44
Переделал схему XDTO в соответствии со структурой XML файла:
http://joxi.ru/L21JoBFRjeQLAX

Ошибок нет. Как теперь получить коллекцию элементов <client>?
Вот в этой строке, что указывается вторым параметром? Самый "верхний" родительский элемент <catalog> или можно сразу указать <clients> получив коллекцию?
ТипФабрикиXDTO = ФабрикаXDTO.Тип("https://www.myproject.ru/xdto";, "???");
7 Fragster
 
гуру
17.03.20
11:44
самый верхний
8 Fragster
 
гуру
17.03.20
11:45
получить
Каталог = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипФабрикиXDTO);
СписокКлиентов = Каталог.clients.client;