Инструменты пользователя

Инструменты сайта


1c:коллекции:дерево_значений

ДеревоЗначений

Описание

ДеревоЗначений это таблица значений, у которой есть иерархия, то есть одним строкам могут быть подчинены другие строки, а этих в свою очередь тоже могут быть подчиненные строки. Как это может выглядеть на форме, можно увидеть ниже.

ВниманиеКак и таблица значений, дерево значений доступно только на сервере.

Создание и использование

Создание дерева значений происходит с помощью метода Новый. У дерева значений работа с коллекцией строк определена явно. И происходит следующим образом:

НовоеДерево = Новый ДеревоЗначений;
НовоеДерево.Колонки.Добавить("КолонкаОдин");
СтрокаДерева = НовоеДерево.Строки.Добавить();
СтрокаДерева.КолонкаОдин = "СтрокаОдин";
 
ЕщеОднаСтрока = НовоеДерево.Строки.Добавить();
ЕщеОднаСтрока.КолонкаОдин = "СтрокаОдинОдин";
 
ВтораяВложеная = СтрокаДерева.Строки.Добавить();
ВтораяВложеная.КолонкаОдин = "СтрокаДва";
 
ВтораяВторая = ВтораяВложеная.Строки.Добавить();
ВтораяВторая.КолонкаОдин = "СтрокаДваДва";
 
ТретьяВложенная = СтрокаДерева.Строки.Добавить();
ТретьяВложенная.КолонкаОдин = "СтрокаТри";
 
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

Вот как выглядит таблица сформированная этим кодом. Вывести на форму дерево значений, можно также как и таблицу значений(добавить на форму табличное поле, указать тип Дерево значений в источнике данных указать на дерево).

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

Так как дерево значений имеет иерархическую структуру, обход с помощью Для каждого поможет обойти только верхний уровень, для обхода всех значений, нужно использовать рекурсивную функцию. Функция будет принимать в качестве аргумента коллекцию строк, как то их обрабатывать и вызывать себя передавая коллекцию строк подчиненную текущей строке, таким образом может быть обработано дерево с любым уровнем вложенности. Собственно вот эта функция:

Процедура ОбходДерева(СтрокиДерева)
	Для Каждого ТекущаяСтрокаДерева из СтрокиДерева Цикл
		//Здесь происходит обработка строки дерева
		…
		ОбходДерева(ТекущаяСтрокаДерева.Строки);
	КонецЦикла
КонецПроцедуры
Только авторизованные участники могут оставлять комментарии.
1c/коллекции/дерево_значений.txt · Последние изменения: 2014/06/20 09:01 — admin