Имя: Пароль:
1C
1С v8
Обход дерева
0 mzelensky
 
12.04.12
15:10
Доброго всем!

Вот такая задача. Есть дерево значений. К примеру 3 уровня вложенности (3-ти последний). Вопрос в том, как обойти последний уровень не в прямом порядке, а в обратном???
1 zak555
 
12.04.12
15:10
по индексу ?
2 mzelensky
 
12.04.12
15:11
(1) ну я тоже только этот вариант нашел...получить число строк и обойти с "количество-1" по "0".
3 Рэйв
 
12.04.12
15:12
(2)А чего тогда спрашиваешь если нашел?
4 zak555
 
12.04.12
15:12
(2) сформируй тогда запрос по "убываю"
5 mzelensky
 
12.04.12
15:14
(3) ну мож еще какой вариант есть?! :)
6 DrShad
 
12.04.12
15:15
а зачем такой обход нужен? может решается все гораздо проще?
7 Kashemir
 
12.04.12
15:28
Процедура ОбойтиДерево(Коллекция, Уровень = 0)
   Уровень = Уровень + 1;
   
   Если Уровень = 3 Тогда
       Для Н = 1 по Коллекция.Строки.Количество() Цикл
           ИскомаяСтрока = КоллекцияСтроки[Коллекция.Строки.Количество() - Н];
       КонецЦикла;
   Иначе
       Для Стр из Коллекция.Строки Цикл
           ОбойтиДерево(Стр, Уровень);
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры

ДЗ = Новый ДеревоЗначений;
// наполняем ДЗ
ОбойтиДерево(ДЗ);
8 Kashemir
 
12.04.12
15:29
+(7) Поправка: ОбойтиДерево(Коллекция, Знач Уровень = 0)
9 Vladal
 
12.04.12
15:35
(0) Посмотри, может, пригодится: http://infostart.ru/public/72380/
10 Vladal
 
12.04.12
15:35
Рекурсивный обход дерева значений с пересчетом иерархических итогов группировок
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший