Обход дерева значений 1С
Вопрос:
Привет! Мне нужно написать процедуру для обхода дерева значений, вся проблема в том, что я не знаю количество уровней дерева, подскажите как реализовать обход дерева значений с неизвестным количеством уровней
Ответ:
Тут нужно воспользоваться рекурсией, т.е. необходимо что бы процедура обхода вызывала сама себя на каждом уровне дерева значений.
Вот примеры такой процедуры:
Для обычного приложения:
Процедура ОбойтиДеревоЗначений(Элемент)
ПодчиненныйЭлемент=Элемент.Строки;
Для Каждого Строка из ПодчиненныйЭлемент Цикл
//Твой код по обработке строки дерева
ОбойтиДеревоЗначений(Строка);
КонецЦикла;
КонецПроцедуры
Для управляемого приложения:
&НаКлиенте
Процедура ОбойтиДеревоЗначений(Элемент)
ПодчиненныйЭлемент=Элемент.ПолучитьЭлементы();
Для Каждого Строка из ПодчиненныйЭлемент Цикл
//Твой код по обработке строки дерева;
ОбойтиДеревоЗначений(Строка);
КонецЦикла;
КонецПроцедуры
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Для начала обхода дерева необходимо вызвать процедуру ОбойтиДеревоЗначений и передать туда верхний уровень дерева. Ну а если верхних уровней несколько, то нужно в цикле обойти их все:
Для Каждого Стр из ДанныеДерева Цикл
ОбходДерева(Стр);
КонецЦикла;