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