Преобразование Таблицы значений в Дерево Значений, с построением уровней

1. G_102345487146519347193 18.09.24 13:03 Сейчас в теме
Создал некоторую Таблицу значений, которую нужно перевести в ДеревоЗначений и определить уровни. Не доконца понимаю какие методы использовать для заполнения, пытался циклом обойти Таблицу и заполнить Дерево, но отладкой прошелся не добавляет.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
8. G_102345487146519347193 20.09.24 08:03 Сейчас в теме
Я решил задачу, вопрос было только понять синтаксис уровней как задается, почему то некоторые люди неадекватно начинают отвечать имея опыт за плечами.
Прикрепленные файлы:
Aleksey3A; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. starjevschik 19.09.24 11:14 Сейчас в теме
(1)
какие методы использовать для заполнения

Методы Добавить(), Найти().
user2033930; +1 Ответить
7. SlavaKron 19.09.24 12:37 Сейчас в теме
(1)
ДеревоЗначений = ТаблицаЗначенийВДеревоЗначений(КаталогТоваров, "Категория")
Функция ТаблицаЗначенийВДеревоЗначений(ТЗ, ПоляГруппировок)
	Группировки = СтрРазделить(ПоляГруппировок, ",", Ложь);
	ДеревоЗначений = Новый ДеревоЗначений;
	
	Для Каждого Колонка Из ТЗ.Колонки Цикл
		ДеревоЗначений.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);
	КонецЦикла;
	
	СоздатьСтрокиДереваРекурсивно(ТЗ, ДеревоЗначений.Строки, Группировки);
	Возврат ДеревоЗначений;
КонецФункции

Процедура СоздатьСтрокиДереваРекурсивно(ТаблицаЗначений, СтрокиДерева, Группировки, ИндексГруппировки = 0)
	
	Если ИндексГруппировки = Группировки.Количество() Тогда
		
		Для Каждого Стр Из ТаблицаЗначений Цикл
			НоваяСтрока = СтрокиДерева.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
		КонецЦикла;
		
		Возврат
	КонецЕсли;
	
	ИмяГруппировки = Группировки[ИндексГруппировки];
	
	ЗначенияГруппировки = ТаблицаЗначений.Скопировать(, ИмяГруппировки);
	ЗначенияГруппировки.Свернуть(ИмяГруппировки);
	
	Для Каждого СтрГруппа Из ЗначенияГруппировки Цикл
		
		Значение = СтрГруппа[ИмяГруппировки];
		
		НоваяСтрокаДерева = СтрокиДерева.Добавить();
		Если СтрокиДерева.Родитель <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(НоваяСтрокаДерева, СтрокиДерева.Родитель);
		КонецЕсли;
		НоваяСтрокаДерева[ИмяГруппировки] = Значение;
		
		СтрокиГруппы = ТаблицаЗначений.Скопировать(Новый Структура(ИмяГруппировки, Значение));
		
		СоздатьСтрокиДереваРекурсивно(СтрокиГруппы, НоваяСтрокаДерева.Строки, Группировки, ИндексГруппировки + 1);

	КонецЦикла;
КонецПроцедуры
Показать
2. user2033930 18.09.24 13:09 Сейчас в теме
Как же так? В таблицу ты смог добавить строки и заполнить их, а в дерево не можешь добавить и заполнить? Методы же одни и те же!
3. G_102345487146519347193 18.09.24 13:12 Сейчас в теме
(2) Вопрос именно в том чтобы заполнить не с нуля а из таблицы значения
4. пользователь 18.09.24 13:27
Сообщение было скрыто модератором.
...
11. пользователь 20.09.24 10:20
Сообщение было скрыто модератором.
...
12. пользователь 20.09.24 10:26
Сообщение было скрыто модератором.
...
13. user1880116 20.09.24 10:35 Сейчас в теме
(12)
научим
Да можно и без обучения его. Сразу.
14. Sashares 35 20.09.24 10:37 Сейчас в теме
(12)
научим

Лежать в пакетах? =))
5. Burgunchic 5 19.09.24 11:00 Сейчас в теме
Лень - двигатель прогресса...

ТЗ = Новый ТаблицаЗначений();
ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50)));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1,0)));
ТЗ.Колонки.Добавить("НаДату", Новый ОписаниеТипов("Дата"));

Для Счетчик = 1 По 5 Цикл
	НовСтрока = ТЗ.Добавить();
	НовСтрока.Товар = "Товар " + Счетчик;
	НовСтрока.Количество = 10 * Счетчик;
	НовСтрока.НаДату = ТекущаяДата();
КонецЦикла;

ДеревоМечтаний = Новый ДеревоЗначений();

Для каждого Колонка Из ТЗ.Колонки Цикл
	ДеревоМечтаний.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения)
КонецЦикла;

Для каждого Строка Из ТЗ Цикл
	НовСтрока = ДеревоМечтаний.Строки.Добавить();
	ЗаполнитьЗначенияСвойств(НовСтрока, Строка);
КонецЦикла;
Показать
8. G_102345487146519347193 20.09.24 08:03 Сейчас в теме
Я решил задачу, вопрос было только понять синтаксис уровней как задается, почему то некоторые люди неадекватно начинают отвечать имея опыт за плечами.
Прикрепленные файлы:
Aleksey3A; +1 Ответить
9. user2033930 20.09.24 08:08 Сейчас в теме
(8) Синтаксис строк вообще ничем не отличается в зависимости от уровней. Вопрос только в том, в какой уровень ты будешь засовывать свою строку, и по какому алгоритму определять эти уровни. А это никаким синтаксисом не помочь, тут только своими мозгами по своим критериям поиска/подбора и умением пользоваться самим этим поиском по дереву.
10. Burgunchic 5 20.09.24 09:25 Сейчас в теме
(8) Каков вопрос -такой ответ. Ванговать на условия задачи - тратить время.
К слову, мой код был проверен в консоли все корректно. Так что учитесь ставить ТЗ.
Сээээр.
Прикрепленные файлы:
15. Burgunchic 5 20.09.24 11:30 Сейчас в теме
(8) Итак...

1) Параметры не передаются
Процедура ТаблицаЗначенийВДерево()

2) Заполнение колонок Дерева не из ТЗ а прямым перебором
3) Заполнение значений строки тоже по каждому полю. См. ЗаполнитьЗначенияСвойств

Вердикт: частное решение.

ЗЫ. моветон самому себе ставить решение, а еще выкладывать скринами, а не текстом.
Оставьте свое сообщение

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