Дерево значений в таблицу значений #ДеревоЗначений
Дерево значений в таблицу значений
&НаСервере
Процедура ВТЗНаСервере()
тДерево = РеквизитФормыВЗначение("Дерево");
тТаблица = РеквизитФормыВЗначение("Таблица");
ПреобразоватьВТЗРекурсия(тДерево, тТаблица, Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"));
тДерево.Строки.Очистить();
ЗначениеВРеквизитФормы(тТаблица, "Таблица");
ЗначениеВРеквизитФормы(тДерево, "Дерево");
КонецПроцедуры
&НаСервере
Процедура ПреобразоватьВТЗРекурсия(тДерево, тТаблица, ГУИД)
Для Каждого тСтр Из тДерево.Строки Цикл
нСтр = тТаблица.Добавить();
нСтр.Колонка1 = тСтр.Колонка1;
нСтр.Колонка2 = тСтр.Колонка2;
нСтр.Родитель = ГУИД;
нСтр.ГУИД = Новый УникальныйИдентификатор();
Если тСтр.Строки.Количество()>0 Тогда
ПреобразоватьВТЗРекурсия(тСтр, тТаблица, нСтр.ГУИД);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
///
Дано: дерево значений (2 колонки) и таблица значений (4 колонки). Две дополнительные колонки в таблице значений нужны для обратного преобразования, если оно не требуется то и колонки не нужны
В колонку «ГУИД» таблицы значений записывается уникальный идентификатор строки (он просто генерируется), а в колонку «Родитель» записывается уникальный идентификатор строки-родителя (для строк верхнего уровня — нулевой уникальный идентификатор).