Обход дерева значений 1С

Вопрос:

Привет! Мне нужно написать процедуру для обхода дерева значений, вся проблема в том, что я не знаю количество уровней дерева, подскажите как реализовать обход дерева значений с неизвестным количеством уровней

 Ответ:

Тут нужно воспользоваться рекурсией, т.е. необходимо что бы процедура обхода вызывала сама себя на каждом уровне дерева значений.

Вот примеры такой процедуры:

Для обычного приложения:

Процедура ОбойтиДеревоЗначений(Элемент)
    ПодчиненныйЭлемент=Элемент.Строки;
    Для Каждого Строка из ПодчиненныйЭлемент Цикл
        //Твой код по обработке строки дерева
        ОбойтиДеревоЗначений(Строка);
    КонецЦикла;
КонецПроцедуры

Для управляемого приложения:

&НаКлиенте
Процедура ОбойтиДеревоЗначений(Элемент)
    ПодчиненныйЭлемент=Элемент.ПолучитьЭлементы();
    Для Каждого Строка из ПодчиненныйЭлемент Цикл
        //Твой код по обработке строки дерева;
        ОбойтиДеревоЗначений(Строка);
    КонецЦикла;
КонецПроцедуры

Для начала обхода дерева необходимо вызвать процедуру ОбойтиДеревоЗначений и передать туда верхний уровень дерева. Ну а если верхних уровней несколько, то нужно в цикле обойти их все:

Для Каждого Стр из ДанныеДерева Цикл
    ОбходДерева(Стр);
КонецЦикла;