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

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

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

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

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

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

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

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

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