1С 8.3 Выгрузка запроса в XML в виде иерархии - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Выгрузка запроса в XML в виде иерархии

Данные > Примеры кода 1С > 1С 8.3 Запросы
Перейти в раздел примеры кода 1С 8.3:
Преобразование запроса с иерархией в xml в 1С 8.3:
&НаСервере
Процедура Выгрузка_запроса_в_XML_с_иерархией(ГруппаМатериалы)

   
XML = Новый ЗаписьXML;
   
XML.ОткрытьФайл("D:\vygruzka_zaprosa.xml""UTF-8");
   
XML.ЗаписатьОбъявлениеXML();
   
XML.ЗаписатьНачалоЭлемента("ОстаткиМатериалов");

   
Запрос = Новый Запрос("ВЫБРАТЬ
    |   МатериалыНаСкладах.Период КАК Период,
    |   МатериалыНаСкладах.Регистратор КАК Регистратор,
    |   МатериалыНаСкладах.Материалы КАК Материалы,
    |   МатериалыНаСкладах.Количество КАК Количество
    |ИЗ
    |   РегистрНакопления.МатериалыНаСкладах КАК МатериалыНаСкладах
    |ГДЕ
    |   МатериалыНаСкладах.Период МЕЖДУ &НачДата И &КонДата
    |   И МатериалыНаСкладах.Материалы В ИЕРАРХИИ(&ГруппаМатериалы)
    |ИТОГИ ПО
    |   Регистратор"
);

   
Результат = Запрос.Выполнить();

   
ИерархияДерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
   
ОбходУровней(ИерархияДерево.СтрокиРезультатаЗапроса, XML);

   
XML.ЗаписатьКонецЭлемента();
   
XML.Закрыть();

КонецПроцедуры

&НаСервере
Процедура ОбходУровней(СтрокиРезультатаЗапроса, XML)

    Для Каждого
Строка Из СтрокиРезультатаЗапроса Цикл

        Если
ПустаяСтрока(Строка(Строка.Материалы)) Тогда //Итог если истина
           
XML.ЗаписатьНачалоЭлемента("Уровень");
           
XML.ЗаписатьАтрибут("Период", Строка(Строка.Период));
           
XML.ЗаписатьАтрибут("Регистратор", Строка(Строка.Регистратор));
           
XML.ЗаписатьАтрибут("Количество", Строка(Строка.Количество));
           
ОбходУровней(Строка.СтрокиРезультатаЗапроса, XML); //рекурсия
           
XML.ЗаписатьКонецЭлемента();
        Иначе
           
XML.ЗаписатьНачалоЭлемента("Уровни");
           
XML.ЗаписатьАтрибут("Период", Строка(Строка.Период));
           
XML.ЗаписатьАтрибут("Регистратор", Строка(Строка.Регистратор));
           
XML.ЗаписатьАтрибут("Материалы", Строка(Строка.Материалы));
           
XML.ЗаписатьАтрибут("Количество", Строка(Строка.Количество));
           
ОбходУровней(Строка.СтрокиРезультатаЗапроса, XML); //рекурсия
           
XML.ЗаписатьКонецЭлемента();
        КонецЕсли

    КонецЦикла;

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 14.04.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому