Имя: Пароль:
1C
 
Чтение XML используя ФабрикуXDTO
0 korstin
 
16.01.16
18:13
Изучаю работу с XML по статье http://i.helpme1c.ru/public/311011/

Есть xml документ такого вида

<Корень>
    <ТестовыеЗаписи>
        <ТестоваяЗапись>
            <Код></Код>
            <Наименование></Наименование>
            <Описание></Описание>
        </ТестоваяЗапись>
        <ТестоваяЗапись>
            <Код></Код>
            <Наименование></Наименование>
            <Описание></Описание>
        </ТестоваяЗапись>
    </ТестовыеЗаписи>
</Корень>

Пробую сделать как в статье

ЧтениеХмл = Новый ЧтениеТекста(Объект.ИмяФайла, КодировкаТекста.UTF8);
    СодержимоеХмл = ЧтениеХмл.Прочитать();
    СодержимоеХмл = СтрЗаменить(СодержимоеХмл, "<Корень", "<Корень xmlns=""http://localhost/testXML""; ");
    
    ЧтениеХмл = Новый ЧтениеXML;
    ЧтениеХмл.УстановитьСтроку(СодержимоеХмл);
    
    ТипКорень = ФабрикаXDTO.Тип("http://localhost/testXML";, "Корень");
    КореньХдто = ФабрикаXDTO.ПрочитатьXML(ЧтениеХмл, ТипКорень);
    
    Для Каждого Строка Из КореньХдто.ТестовыеЗаписи Цикл
        Сообщить("Есть строка");
    КонецЦикла;

Но получаю ошибку "Итератор для значения не определен". Где я ошибся?
1 GenV
 
16.01.16
18:33
(0) Это "КореньХдто.ТестовыеЗаписи" в отладчике проверь
2 korstin
 
16.01.16
18:38
(1) ОбъектXDTO
3 vicof
 
16.01.16
18:39
ТипТестоваяЗапись = ФабрикаXDTO.Тип("http://localhost/testXML";;, "ТестоваяЗапись");
4 korstin
 
16.01.16
18:43
(3) Простите, я не понял
5 vicof
 
16.01.16
18:48
(4) У объекта XDTO нет записей. Тебе нужно получить свойство, которое эти записи хранит.
6 GenV
 
16.01.16
19:00
(2) Тут СписокXDTO будет только, если объектов несколько (если это должна быть коллекция по твоей фабрике), иначе будет ОбъектXDTO. А его в цикле не обойдешь.
ЗЫ В статье же про это написали ...
7 korstin
 
16.01.16
19:03
(6) Это описывали в другом методе
8 korstin
 
17.01.16
06:24
(5) (6) Спасибо, все получилось
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс