1С 8.3 Преобразование Дерева Значений в Таблицу Значений
Данные > Примеры кода 1С > 1С 8.3 Дерево значений
Перейти в раздел примеры кода 1С 8.3:

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