Простая функция которая находит максимальное количество уровней в дереве значений 1с.
Вычислять будем в 2 этапа:1. Обращаемся к процедуре на сервере в которой переганяем наше дерево значений в из реквизита в значение.
2. Потом обращаемся к функции которая также будет рекурсивно обращаться сама к себе.
&НаСервере
Процедура НайтиМаксимальныйУровеньНаСервере()
ДеревоЗначенныйРек = РеквизитФормыВЗначение("ДЗ"); // НашеДерево значень
КоличествоУровней = КоличествоУровней(ДеревоЗначенныйРек.Строки); // Тут перебираємо рівні
Сообщить("Максимальна кількіст:" + Строка(КоличествоУровней));
КонецПроцедуры
Функция КоличествоУровней(СтрокиДЗ)
Если СтрокиДЗ.Количество() = 0 Тогда
Возврат 0;
КонецЕсли;
КоличествоУровней = 0;
Для каждого СтрокаДЗ ИЗ СтрокиДЗ Цикл
КоличествоУровней = Макс(КоличествоУровней(СтрокаДЗ.Строки), КоличествоУровней);
КонецЦикла;
Возврат КоличествоУровней + 1;
КонецФункции
2024-06-09