Вход | Регистрация
 

Как найти максимальный уровень строк исходного дерева значений и вывести его на форму?

Как найти максимальный уровень строк исходного дерева значений и вывести его на форму?
Я
   sergqwert
 
11.04.21 - 16:32
Как найти максимальный уровень строк исходного дерева значений и вывести его на форму в реквизит "Уровень"? Во время отладки возникает ошибка Поле объекта не обнаружено (СтрокиДЗ).
{Обработка.Тест4.Форма.Форма.Форма(48)}: КоличествоУровней(ДеревоЗначений.СтрокиДЗ);
{Обработка.Тест4.Форма.Форма.Форма(42)}: ВыполнитьРезультатНаСервере();

&НаСервере
Процедура ВыполнитьРезультатНаСервере()
    ДеревоЗначенийРек  = РеквизитФормыВЗначение("ДеревоЗначений");
    ДеревоЗначенийРек.Строки.Очистить();
    КоличествоУровней(ДеревоЗначений.СтрокиДЗ);
    ЗначениеВРеквизитФормы(ДеревоЗначенийРек, "ДеревоЗначений");
        
КонецПроцедуры

Функция КоличествоУровней(СтрокиДЗ)
    
Если СтрокиДЗ.Количество() = 0 Тогда Возврат 0 КонецЕсли;

   КоличествоУровней = 0;
   Для Каждого СтрокаДЗ ИЗ СтрокиДЗ.Строки Цикл
       КоличествоУровней = Макс(КоличествоУровней(СтрокаДЗ.Строки), КоличествоУровней);
   КонецЦикла;

   Возврат КоличествоУровней + 1;
  
КонецФункции
   vicof
 
1 - 11.04.21 - 17:10
КоличествоУровней(ДеревоЗначений.Строки);
   vicof
 
2 - 11.04.21 - 17:11
Точней КоличествоУровней(ДеревоЗначенийРек.Строки);
   vicof
 
3 - 11.04.21 - 17:11
Ну и очистку убрать перед этим
   sergqwert
 
4 - 11.04.21 - 18:05
Переписал код.
&НаСервере
Процедура ВыполнитьРезультатНаСервере()
    ДеревоЗначенийРек  = РеквизитФормыВЗначение("ДеревоЗначений");
    КоличествоУровней(ДеревоЗначенийРек.Строки);
    ЗначениеВРеквизитФормы(ДеревоЗначенийРек, "ДеревоЗначений");
        
КонецПроцедуры

Функция КоличествоУровней(СтрокиДЗ)
    
Если СтрокиДЗ.Количество() = 0 Тогда Возврат 0 КонецЕсли;

   КоличествоУровней = 0;
   Для Каждого СтрокаДЗ ИЗ СтрокиДЗ[0].Строки Цикл
     КоличествоУровней = Макс(КоличествоУровней(СтрокаДЗ.Строки), КоличествоУровней);
   КонецЦикла;

   Возврат КоличествоУровней + 1;
   
КонецФункции

Выводит максимальный уровень = 1, а нужно чтобы максимальный уровень = 4. Как сделать?
   vicof
 
5 - 11.04.21 - 18:15
Загугли, как дерево значений иерархически обходить. Тыщу раз обсуждалось.
Ну и надо отладчиком начинать пользоваться.
   sergqwert
 
6 - 11.04.21 - 18:19
   Chameleon1980
 
7 - 11.04.21 - 18:19
Продам все решения этой конфы
😁
   Chameleon1980
 
8 - 11.04.21 - 18:20

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