MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
1C 8.2: Обход древовидной выборки (иерархии) примеры Шпаков
12.11.2012
11:01
Раздел: Компьютер - Windows - 1С - Готовые решения

Вариант через ДеревоЗначений

// Результат запроса помещается в дерево значений

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

// Дерево значений выводится рекурсивно на форму

Таб.НачатьАвтогруппировкуСтрок();

ВывестиДерево(ДЗ.Строки);

Таб.ЗакончитьАвтогруппировкуСтрок();

// Рекурсивная процедура вывода дерева на форму

Процедура ВывестиДерево(Строки)

Для Каждого ТекСтрока ИЗ Строки Цикл

Если ТекСтрока.Уровень()=0 Тогда

ОП = Макет.ПолучитьОбласть("СтрокаИтоги");

ИначеЕсли ТекСтрока.Уровень()=1 Тогда

ОП = Макет.ПолучитьОбласть("СтрокаЖ");

ИначеЕсли ТекСтрока.Уровень()=2 Тогда

ОП = Макет.ПолучитьОбласть("СтрокаЖ1");

Иначе

ОП = Макет.ПолучитьОбласть("Строка");

КонецЕсли;

ОП.Параметры.Заполнить(ТекСтрока);

ВывестиДерево(ТекСтрока.Строки);

КонецЦикла;

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

Вариант через группировку строк:

ВыборкаПериод = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

ТабДок.НачатьГруппуСтрок();

ВыборкаФирма = ВыборкаПериод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаФирма.Следующий() Цикл

ТекФирма = ВыборкаФирма.Фирма;

ВыборкаНомерСчета = ВыборкаФирма.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

ВыборкаДетали = ВыборкаНомерСчета.Выбрать();

Пока ВыборкаДетали.Следующий() Цикл

...

Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования