Выдает ошибку обработка
{ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(19)}: Итератор для значения не определен
 Для Каждого стрДерева из ДеревоЗн Цикл

Вот текст обработки:

```1c
    &НаКлиенте
    Процедура ПодсчитатьУровни(Команда)

    КоличествоУровней = 0;
    СтрокиДер = 0;

    ПодсчитатьУровниНаСервере(СтрокиДер,СтрокиДер );

    Сообщить("Максимальное количество уровней = " + КоличествоУровней);

    КонецПроцедуры

    &НаСервере
    Процедура ПодсчитатьУровниНаСервере(СтрДер, К)

    Для Каждого стрДерева из ДеревоЗн Цикл

    Если стрДерева.Строки.Количество() <> 0 Тогда
    ПодсчитатьУровниНаСервере(стрДерева.Строки, К);
    К = стрДерева.Уровень();
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
```
---
Ошибку нашел

```1c
    К = Макс(К, стрДерева.Уровень());
```
---
И что есть ДеревоЗн? Предположу, что это реквизит с типом ДеревоЗначений. Тогда

```1c
    Для Каждого стрДерева из ДеревоЗн.Строки Цикл
```
---
ДеревоЗн -это дерево значений на форме обработки (формы управляемые)

{ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(21)}: Поле объекта не обнаружено (Строки)
 Для Каждого стрДерева из ДеревоЗн.Строки Цикл
---
Что значит "дерево значений на форме обработки"? Это элемент формы?
Работать нужно с данными элемента, то что в поле ПутьКДанным в свойствах элементах, а не самим элементом.
---
help потерял
---
Элемент формы
---
Переписал на

```1c
    &НаКлиенте
    Процедура ПодсчитатьУровни(Команда)

    КвоУровней = 0;
    ПодсчитатьУровниНаСервере(КвоУровней);
    Сообщить("Максимальное количество уровней = " + КвоУровней);

    КонецПроцедуры

    &НаСервере
    Процедура ПодсчитатьУровниНаСервере(КвоУровней)
    ДеревоОбъект = РеквизитФормыВЗначение("ДеревоЗн");
    КвоУровней = 0;
    КолвоУровнейДерева(ДеревоОбъект,КвоУровней);
    КонецПроцедуры
    &НаСервере
    Процедура КолвоУровнейДерева(СтрДер, К)
    Для Каждого стрДерева из СтрДер.Строки Цикл
    К = Макс(К, СтрДер.Уровень());
    Если стрДерева.Строки.Количество() <> 0 Тогда
    КолвоУровнейДерева(стрДерева, К);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
---
Теперь выдает ошибку
{ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(21)}: Метод объекта не обнаружен (Уровень)
        К = Макс(К, СтрДер.Уровень());
---
Ошибку нашел

```1c
    К = Макс(К, стрДерева.Уровень());
```
---
А почему нельзя на клиенте рекурсивно посчитать? зачем гонять на сервер?
---
зачем гонять на серверНа клиенте нет такого типа, как дерево значений. У топикастера какой-то изврат, который в переменной лежит общей. Я бы так не стал делать, да и уровень дерева в запросе можно получить (в ряде случаев).
---
, а я ничего не писал, что оно есть, на клиенте есть "неудобное" ДанныеФормыДерево.
Относительный аналог "Для Каждого стрДерева из ДеревоЗн.Строки Цикл" является "Для Каждого стрДерева из ДеревоЗн.ПолучитьЭлементы() Цикл"

как вариант: https://forum.infostart.ru/forum9/topic113341/ (сам принцип), понятно, что цикл можно можно сделать рекурсивно

в цикле считай всё, что хочешь
---
базовый алгоритм работы с деревом - рекурсивный. А данные формы или дерево - разницы ноль.
---
так я о том и говрю, если нет разницы зачем платить больше, лезть на сервер)
---
Ну мало ли... Все таки арсенал методов для работы с прикладным ДЗ шире, чем с ДанныеФормыКоллекция... Все зависит от задачи и используемых данных.
---
```1c
    // Рассчитывает количество уровней дерева.
    //
    // Параметры:
    // ЭлементДерева - ДанныеФормыЭлементДерева - текущий элемент дерева, для которого необходимо посчитать количество уровней
    // ТекущийУровень - Число - текущий уровень дерева
    //
    // Возвращаемое значение:
    // Число
    //
    &НаКлиенте
    Функция КоличествоУровнейДерева(ЭлементДерева, ТекущийУровень = 0)

    МаксимальныйУровень = ТекущийУровень;
    Для Каждого СтрокаДерева Из ЭлементДерева.ПолучитьЭлементы() Цикл
    УровеньСтрокиДерева = КоличествоУровнейДерева(СтрокаДерева, ТекущийУровень + 1);
    Если УровеньСтрокиДерева > МаксимальныйУровень Тогда
    МаксимальныйУровень = УровеньСтрокиДерева;
    КонецЕсли;
    КонецЦикла;
    Возврат МаксимальныйУровень;

    КонецФункции
```