Имя: Пароль:
1C
1C 7.7
v7: Как обойти элементы узла дерева FormEx?
0 palpetrovich
 
05.08.16
11:29
полный обход решается рекурсией
Процедура ОбходВетки(ТЗ, Уровень)
    Если ТипЗначенияСтр(ТЗ) = "ТаблицаЗначений" Тогда
        ТЗ.ВыбратьСтроки();
        Пока ТЗ.ПолучитьСтроку() = 1 Цикл
            ОбходВетки(ТЗ.ТЗ, Уровень+1);
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
Процедура ОбходДерева()
    Табл.ВыбратьСтроки();
    Пока Табл.ПолучитьСтроку() = 1 Цикл
        ОбходВетки(Табл.ТЗ, 1);
    КонецЦикла;
КонецПроцедуры

а вот как обойти только узел - мне непонятно

есть АтрФормы.ТекущаяСтрокаДерева(), возращает к примеру 3/23/1, как я понимаю 3 - номер строки в первой ТЗ, 23 - во второй, 1 - в третьей

решение которое приходит в голову, спозиуионироваться на третьей и обойти рекрсивно
Может есть решение попроще или покрасивей?
1 Это_mike
 
05.08.16
11:37
других вариантов вроде нет.
а чего ты хочешь добиться?
2 palpetrovich
 
05.08.16
11:39
+(0) прошу прощения за опечатки :)
(1) да банально проставить "Пометку"
3 Это_mike
 
05.08.16
11:47
(2) обойти вглубь... ну так ты и так спозиционирован на той строке, от которой над углубляться...
4 palpetrovich
 
05.08.16
11:53
(3) не похоже
ТекСтрока = АФ.ТекущаяСтрокаДерева();
Сообщить("ТекущаяСтрокаДерева=  "+ТекСтрока+" ТекущаяСтрока ТЗ= "+Табл.ТекущаяСтрока());
//ТекущаяСтрокаДерева=  1/2 ТекущаяСтрока ТЗ= 0