Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Уровень дерева значений по текущей строке.

Уровень дерева значений по текущей строке.
Я
   San335
 
29.09.21 - 10:09
Доброго времени суток.
Есть управляемая форма, на ней дерево значений. При выполнении обработчика событий "Выбор" нужно определить уровень дерева значений.
Подскажите плиз, возможно ли по текущей строке дерева значений определить ее уровень? Если да, то как?
   Ненавижу 1С
 
1 - 29.09.21 - 10:12
(0) СтрокаДереваЗначений (ValueTreeRow)
Уровень (Level)
Синтаксис:
Уровень()
Возвращаемое значение:
Тип: Число.
Для строки, не имеющей родителя, уровень будет равен 0.
Описание:
Получает уровень строки дерева значений.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Нумерация уровней дерева значений начинается с 0.
Использование в версии:
Доступен, начиная с версии 8.0.
   San335
 
2 - 29.09.21 - 10:27
(1) На управляйках не прокатит. Дерево на клиенте - это реквизит с типом ДанныеФормыДерево. Текущая строка - это ДанныеФормыЭлементДерева.
А уровень() применяется непосредственно к самому ДеревуЗначений. Только если попробовать с клиента из текущих данных передать реквизиты в серверный метод и там просто найти эту строку в самом дереве через НайтиСтроки().....
   pechkin
 
3 - 29.09.21 - 10:29
проще уровень вычислить в цикле по родителю
   San335
 
4 - 29.09.21 - 10:30
(3) Рекурсией?
   pechkin
 
5 - 29.09.21 - 10:31
(4) циклом
пока родитель <> неопределено
   Kassern
 
6 - 29.09.21 - 10:35
(0) а разве ВыбраннаяСтрока в параметрах процедуры не будет текущим уровнем?
   San335
 
7 - 29.09.21 - 10:36
(6) Нет.Это индекс на строку из ДанныеФормыЭлементДерева.
   San335
 
8 - 29.09.21 - 10:47
(5) Типа вот такого?
&НаКлиенте
Функция ПолучитьУровеньДереваТекущейСтрокиКлиент(ТекущаяСтрока)
    
    УровеньТекущейСтроки = 0;
    
    РодительТекущейСтроки = ТекущаяСтрока.ПолучитьРодителя();
    Пока РодительТекущейСтроки <> Неопределено Цикл
        
        УровеньТекущейСтроки = УровеньТекущейСтроки + 1;  
        РодительТекущейСтроки = РодительТекущейСтроки.ПолучитьРодителя();
        
    КонецЦикла;
    
    Возврат УровеньТекущейСтроки;
    
КонецФункции
   acht
 
9 - 29.09.21 - 10:47
(7) > индекс на строку

Да сколько ж можно-то... Идентификатор это, идентификатор. Начни изменять дерево, добавлять и удалть узлы и все увидишь.
   San335
 
10 - 29.09.21 - 10:51
(9) Ок, оговорился в терминах. Но как он может помочь найти строку, которая может находиться на предпоследнем уровне дерева?
   pechkin
 
11 - 29.09.21 - 10:58
(8) да
   San335
 
12 - 29.09.21 - 11:05
(11) Благодарю за помощь!

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.