Имя: Пароль:
1C
 
Как обойти/перебрать дерево значений?
0 Пендальф Серый
 
30.06.09
15:02
Имеется дерево значений с известным количество уровней иерархии. Как его обойти типо того:
ВыбратьЭлементыВерхнегоУровня()
Пока ПолучитьЭлементВерхнегоУровня() Цикл
    ВыбратьЭлементыСреднегоУровня()
    Пока ПолучитьЭлементСреднегоУровня() Цикл
          ВыбратьЭлементыНижнегоУровня()
              Пока ПолучитьЭлементНИжнегоУровня() Цикл

               КонецЦикла
     КонецЦикла
КонецЦикла

Я не знаю как это сделать и возможно ли такое вообще с деревом значений?
1 Живой Ископаемый
 
30.06.09
15:04
габец простые дерево
2 НастоящееИмя
 
30.06.09
15:04
(1)Лаконично
3 Mitriy
 
30.06.09
15:06
Рекурсия
4 Пендальф Серый
 
30.06.09
15:07
У меня Габец в ЕСИСе. Там только как заполнить
5 Irbis
 
30.06.09
15:07
но чтобы понять что такое рекурсия необходимо разобраться с рекурсией
6 Пендальф Серый
 
30.06.09
15:09
Я знаю что такое рекурсия. К чему обращаться в этой Дереве, вот в чем вопрос...
7 Пендальф Серый
 
30.06.09
15:10
Как его обходить...
8 Живой Ископаемый
 
30.06.09
15:11
хм, действительно в габце - только как заполнять... Но раз есть ЕСИС, то может в нем поискать как дерево обходить? Или тебе нужные новые, неприпавшие пылью ответы на этот актуальнейший вопрос всех времен и народов?
9 Пендальф Серый
 
30.06.09
15:12
Дык искал... и в гугуле тоже. Не могу найти.
10 Mitriy
 
30.06.09
15:12
(6) чо-нить типа:

Функция ПолучитьПодстроки(Дерево)
Для Каждого Подстрока Из Дерево.Строки Цикл

//обработка подстроки
ПолучитьПодстроки(Подстрока);

КонецЦикла;
КонецПроцедуры
11 Пендальф Серый
 
30.06.09
15:13
Как вообще обход делать? Для Каждого не работает.
12 Puppets
 
30.06.09
15:13
Ну его можно обойти циклом Для каждого. Не пробовал ?
13 Mitriy
 
30.06.09
15:13
(10)* ступил немножко... щас...
14 Господин ПЖ
 
30.06.09
15:14
все там работает. обычные коллекции из

а = строка.Строки;
б = а.Строки;

и т.д. вглубь
15 Irbis
 
30.06.09
15:14
(11) Строки тебе в руки
16 Asmody
 
30.06.09
15:14
Процедура ОбойтиУровеньДерева(Строки)
 Для каждого Строка из Строки Цикл
    //что-то делаем со строкой
    ОбойтиУровеньДерева(Строка.Строки);
 КонецЦикла;
КонецПроцедуры

ОбойтиУровеньДерева(Дерево.Строки);
17 MSensey
 
30.06.09
15:15
А для чего тебе его обходить? Может Строки.НайтиСтроки() поможет?
18 Puppets
 
30.06.09
15:16
Циклом Для каждого не пробовал?
19 Mitriy
 
30.06.09
15:16
Процедура ОбойтиПодстроки(СтрокиДерева)
   Для Каждого Строка Из СтрокиДерева Цикл
       Сообщить(Строка.ИмяРеквизита);
       ОбойтиПодстроки(Строка.Строки);
   КонецЦикла;
КонецПроцедуры
20 Пендальф Серый
 
30.06.09
15:17
Для Каждого я делал из ТЗ.Количество() вот и вылетало в ошибку. Косячу...
21 Mitriy
 
30.06.09
15:17
(16) гы...
22 Puppets
 
30.06.09
15:19
23 Asmody
 
30.06.09
15:19
(21) ога
24 IronDemon
 
30.06.09
15:20
Ошибка? Это не ошибка, это системная функция.