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