Имя: Пароль:
1C
1С v8
Чтение XML, перебор вложенного узла
0 KDS
 
05.06.20
14:51
Добрый день форумчане. Не могу разобраться с загрузкой вложенного узла XML документа, как его обойти и добавить в структуру (массив)

Первая часть до перебора строк товаров читается нормально

[URL=https://hostingkartinok.com/show-image.php?id=2c51cb26ddd5f4b9693d1eb3b43b41c2][IMG]https://s8.hostingkartinok.com/uploads/images/2020/06/2c51cb26ddd5f4b9693d1eb3b43b41c2.jpg[/IMG][/URL]

        ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;        
    
        Чтение = Новый ЧтениеXML;
        Чтение.ОткрытьФайл(ПутьКФайлу);          
                          
        МассивВыгрузки = Новый Массив();
        Пока Чтение.Прочитать() Цикл
            Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента и Чтение.Имя="ПоступлениеДок" Тогда
                Структура = Новый Структура;
                Структура.Вставить("Номер",Чтение.ЗначениеАтрибута("Номер"));
                Структура.Вставить("Дата",Чтение.ЗначениеАтрибута("Дата"));
                Структура.Вставить("Склад",Чтение.ЗначениеАтрибута("Склад"));
                Структура.Вставить("Контрагент",Чтение.ЗначениеАтрибута("Контрагент"));
                Структура.Вставить("КонтрагентИНН",Чтение.ЗначениеАтрибута("КонтрагентИНН"));            
                Структура.Вставить("Организация",Чтение.ЗначениеАтрибута("Организация"));
                Структура.Вставить("ДоговорКонтрагента",Чтение.ЗначениеАтрибута("ДоговорКонтрагента"));
                Структура.Вставить("Ответственный",Чтение.ЗначениеАтрибута("Ответственный"));
                Структура.Вставить("НомерВходящегоДокумента",Чтение.ЗначениеАтрибута("НомерВходящегоДокумента"));
                Структура.Вставить("ДатаВходящегоДокумента",Чтение.ЗначениеАтрибута("ДатаВходящегоДокумента"));
                Структура.Вставить("СчетУчетаРасчетовСКонтрагентом",Чтение.ЗначениеАтрибута("СчетУчетаРасчетовСКонтрагентом"));
                Структура.Вставить("СуммаДокумента",Чтение.ЗначениеАтрибута("СуммаДокумента"));
                Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "ТЧТовары" Тогда
                    МассивТЧ = Новый Массив();
                    Пока Чтение.ПрочитатьАтрибут() Цикл
                        СтруктураТЧ = Новый Структура;
                        СтруктураТЧ.Вставить("Номенклатура",Чтение.ЗначениеАтрибута("Номенклатура"));
                        СтруктураТЧ.Вставить("ЕдиницаИзмерения",Чтение.ЗначениеАтрибута("ЕдиницаИзмерения"));
                        СтруктураТЧ.Вставить("Коэффициент",Чтение.ЗначениеАтрибута("Коэффициент"));
                        СтруктураТЧ.Вставить("Количество",Чтение.ЗначениеАтрибута("Количество"));
                        СтруктураТЧ.Вставить("Цена",Чтение.ЗначениеАтрибута("Цена"));
                        СтруктураТЧ.Вставить("Сумма",Чтение.ЗначениеАтрибута("Сумма"));
                        СтруктураТЧ.Вставить("СтавкаНДС",Чтение.ЗначениеАтрибута("СтавкаНДС"));
                        СтруктураТЧ.Вставить("СуммаНДС",Чтение.ЗначениеАтрибута("СуммаНДС"));
                        СтруктураТЧ.Вставить("ОтражениеВУСН",Чтение.ЗначениеАтрибута("ОтражениеВУСН"));
                        МассивТЧ.Добавить(СтруктураТЧ);
                    КонецЦикла;
                    Структура.Вставить("Товары",МассивТЧ);                    
                КонецЕсли;
            Иначе
                Продолжить;
            КонецЕсли;
            МассивВыгрузки.Добавить(Структура);
        КонецЦикла;
1 KDS
 
05.06.20
14:51
2 arsik
 
гуру
05.06.20
14:53
Читай через DOM, тогда у тебя дерево будет, а так у тебя просто элементы друг за другом.
3 arsik
 
гуру
05.06.20
14:54
4 arsik
 
гуру
05.06.20
14:56
+(3) Или через XDTO http://catalog.mista.ru/public/311011/
5 KDS
 
05.06.20
15:03
Спасибо, пошел курить XDTO )))
6 KDS
 
05.06.20
15:50
(4) Спасибо за дельный совет, всё работает!