Массив структур в дерево значений?

1. burni4 87 26.04.18 09:31 Сейчас в теме
Добрый день, не поможете с примером кода для преобразования массива структур, в дерево значений с двумя реквизитами "ключ" и "значение"?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Fe9_min 50 26.04.18 09:41 Сейчас в теме
У меня в старых обработках есть такой код:

ПЗ                                               = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных                                = Новый ОписаниеИсточникаДанных(ТЗ); // передаём ТЗ или массив
ПЗ.ДобавлениеПредставлений                       = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ИсточникДанных.Колонки.Наименование.Измерение = Истина; // по этой колонке идет группировка - "Наименование"
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
Древо = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
3. burni4 87 26.04.18 09:44 Сейчас в теме
(2)
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);//передаем ТЗ или массив
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ИсточникДанных.Колонки.Наименование.Измерение = Истина; //по этой колонке идет группировка - "Наименование"
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
Древо = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);


попробовал, выдало ошибку, вызываю на сервере

Ошибка при вызове конструктора (ОписаниеИсточникаДанных)
4. Fe9_min 50 26.04.18 09:55 Сейчас в теме
(3) загрузите массив в ТЗ и вперёд, я попробовал - с ТЗ работает точно.
Таб = Новый ТаблицаЗначений;
Таб.Колонки.Добавить("Фрукты");
Таб.ЗагрузитьКолонку(НашМассив, "Фрукты");
	
ПЗ                                         = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных                          = Новый ОписаниеИсточникаДанных(Таб); // передаём ТЗ или массив
ПЗ.ДобавлениеПредставлений                 = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ИсточникДанных.Колонки.Фрукты.Измерение = Истина; // по этой колонке идет группировка - "Фрукты"
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
Древо = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Показать
5. spacecraft 26.04.18 09:55 Сейчас в теме
(3)
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);//передаем ТЗ или массив

Массив не поддерживается.
6. burni4 87 26.04.18 10:16 Сейчас в теме
разобрался, получилось так

&НаСервере
Функция СформироватьДерево(НашаСтруктура,ТекущееДерево)
		
	Для каждого СтрокаСтруктуры из НашаСтруктура цикл		
		ПодчиненнаяСтрока=ТекущееДерево.Строки.Добавить();
		ПодчиненнаяСтрока.Ключ=СтрокаСтруктуры.Ключ;	
		Если ТипЗнч(СтрокаСтруктуры.Значение)=Тип("Структура") тогда			
			СформироватьДерево(СтрокаСтруктуры.Значение,ПодчиненнаяСтрока)
		Иначе
			ПодчиненнаяСтрока.Значение=СтрокаСтруктуры.Значение;
		КонецЕсли;	
	КонецЦикла;
	
КонецФункции
Показать


где НашаСтруктура- структура массивов а ТекущееДерево - строка дерева
7. Fe9_min 50 26.04.18 10:52 Сейчас в теме
когда в следующий раз будешь задавать вопрос - сформулируй его как адекватный человек, а не как среднестатистический пользак...
ему помогают с массивом, а у него структура...
для преобразования массива структур

и
где НашаСтруктура- структура массивов

немного разнятся, самую малось, почти не явно. "Документ в поле" и "поле в документе" тоже чуть-чуть отличаются.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот