Базовые положения
Общие объекты
Общие метаданные
Прикладные объекты
Базовые положения
Общие объекты
Общие метаданные
Прикладные объекты
ДеревоЗначений это таблица значений, у которой есть иерархия, то есть одним строкам могут быть подчинены другие строки, а этих в свою очередь тоже могут быть подчиненные строки. Как это может выглядеть на форме, можно увидеть ниже.
ВниманиеКак и таблица значений, дерево значений доступно только на сервере.
Создание дерева значений происходит с помощью метода Новый. У дерева значений работа с коллекцией строк определена явно. И происходит следующим образом:
НовоеДерево = Новый ДеревоЗначений;
НовоеДерево.Колонки.Добавить("КолонкаОдин");
СтрокаДерева = НовоеДерево.Строки.Добавить();
СтрокаДерева.КолонкаОдин = "СтрокаОдин";
ЕщеОднаСтрока = НовоеДерево.Строки.Добавить();
ЕщеОднаСтрока.КолонкаОдин = "СтрокаОдинОдин";
ВтораяВложеная = СтрокаДерева.Строки.Добавить();
ВтораяВложеная.КолонкаОдин = "СтрокаДва";
ВтораяВторая = ВтораяВложеная.Строки.Добавить();
ВтораяВторая.КолонкаОдин = "СтрокаДваДва";
ТретьяВложенная = СтрокаДерева.Строки.Добавить();
ТретьяВложенная.КолонкаОдин = "СтрокаТри";
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Вот как выглядит таблица сформированная этим кодом. Вывести на форму дерево значений, можно также как и таблицу значений(добавить на форму табличное поле, указать тип Дерево значений в источнике данных указать на дерево).
Так как дерево значений имеет иерархическую структуру, обход с помощью Для каждого поможет обойти только верхний уровень, для обхода всех значений, нужно использовать рекурсивную функцию. Функция будет принимать в качестве аргумента коллекцию строк, как то их обрабатывать и вызывать себя передавая коллекцию строк подчиненную текущей строке, таким образом может быть обработано дерево с любым уровнем вложенности.
Собственно вот эта функция:
Процедура ОбходДерева(СтрокиДерева) Для Каждого ТекущаяСтрокаДерева из СтрокиДерева Цикл //Здесь происходит обработка строки дерева … ОбходДерева(ТекущаяСтрокаДерева.Строки); КонецЦикла КонецПроцедуры