Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 07:21

Как сохранить вложенность групп для хмл файла

Автор Vasylii, 08 окт 2023, 07:05

0 Пользователей и 1 гость просматривают эту тему.

Vasylii

Создаю ХМЛ файл С номенклатурой, заполняю группы по иерархии, они заполняются но не сохраняется их вложенность, я думаю что надо сделать условие через .Уровень() но не уверен в этом, сами группы получаю через запрос и потом по циклу обхожу дерево значений куда выгрузил запрос нужно получить структуру как на скриншоте
Код Рекурсии;

Для Каждого СтрПолученногоДерева Из Стр.Строки Цикл
       
        этоГруппа = СтрПолученногоДерева.ГруппаНоменклатуры.этогруппа;
        Если этоГруппа тогда
            ЗаписьXML.ЗаписатьНачалоЭлемента("Группа");
            ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
            ЗаписьXML.ЗаписатьТекст(строка(СтрПолученногоДерева.ГруппаНоменклатуры.УникальныйИдентификатор()));
            ЗаписьXML.ЗаписатьКонецЭлемента(); // Ид
           
            ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
            ЗаписьXML.ЗаписатьТекст(строка(СтрПолученногоДерева.ГруппаНоменклатуры));
            ЗаписьXML.ЗаписатьКонецЭлемента(); // Наименование
            //Если Стр.Строки.Количество()>0 Тогда
            ОбойтиДеревоЗначений(Стр,ЗаписьXML);
            //КонецЕсли;
        Иначе
            Продолжить;
        КонецЕсли;
    КонецЦикла;

код создания групп;

Для Каждого Стр из дерево.строки Цикл
        // xml группа
        ЗаписьXML.ЗаписатьНачалоЭлемента("Группа");
        ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
        ЗаписьXML.ЗаписатьТекст(строка(стр.ГруппаНоменклатуры.УникальныйИдентификатор()));
        ЗаписьXML.ЗаписатьКонецЭлемента(); // Ид
       
        ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
        ЗаписьXML.ЗаписатьТекст(строка(стр.ГруппаНоменклатуры));
        ЗаписьXML.ЗаписатьКонецЭлемента(); // Наименование
       
        ОбойтиДеревоЗначений(Стр,ЗаписьXML);

        ЗаписьXML.ЗаписатьКонецЭлемента(); // Группа
        // конец xml группа

Vasylii

Vasylii, понял из-за чего пробелема с вложенностью, из-за того что Группа закрывается после функции обойти дерево значений, но все равно понять не могу как сделать правильно что бы сохранялась вложенность

Vasylii

Vasylii, проблема решена, забыл закрывать группу внутри рекурсии и перед началом рекурсии открывать и закрывать

LexaK

Vasylii, вы занимаетесь какой то ерундой, уже давно разработана выгрузка и загрузка данных через ХМЛ файл. Возьмите её и посмотрите как она устроена, там все это уже есть, и соблюдение иерархии тоже,
Нормапьные прогеры, не изобретаю старые алгоритмы, а берут их готовыми для решения своих задач.
если помогло нажмите: Спасибо!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск