Создал дерево значений, мне необходимо добавить Иерархический вид, например по Номенклатуре. В моем случае идет создание строк по типо родитель-поле-поле-поле, а нужно в виде родитель-поле, родитель-поле. Как можно правильно настроить дерево и где, чтобы можно было строить дерево в таком виде? Т.е. нужна группировка по определенному полю, в этой группе может быть несколько строк, но при этом можно создавать несколько групп различных
---
```1c
    МоеДерево = Новый ДеревоЗначений;
    МоеДерево.Колонки.Добавить("Номенклатура");
    МоеДерево.Колонки.Добавить("ИмяРеквизита");
    МоеДерево.Колонки.Добавить("ЗначениеРеквизита");

    Для Каждого СтрТаблЗначений Из ТаблЗначений Цикл //перебираем строки таблицы из результата запроса

    СтрокаРодитель = МоеДерево.Строки.Добавить(); //1-й уровень дерева
    СтрокаРодитель.Номенклатура = СтрТаблЗначений.Номенклатура;

    СтрокаПодчиненная = СтрокаРодитель.Строки.Добавить(); // 2 уровень дерева, добавляем строки подчиненные строке-родителю

    СтрокаПодчиненная.Номенклатура = "-";
    СтрокаПодчиненная.ИмяРеквизита = СтрТаблЗначений.Код;
    СтрокаПодчиненная.ЗначениеРеквизита = СтрТаблЗначений.Наименование;

    КонецЦикла;
```

Во вложении демо-обработка с обычной формой
---
```1c
    МоеДерево = Новый ДеревоЗначений;
    МоеДерево.Колонки.Добавить("Номенклатура");
    МоеДерево.Колонки.Добавить("ИмяРеквизита");
    МоеДерево.Колонки.Добавить("ЗначениеРеквизита");

    Для Каждого СтрТаблЗначений Из ТаблЗначений Цикл //перебираем строки таблицы из результата запроса

    СтрокаРодитель = МоеДерево.Строки.Добавить(); //1-й уровень дерева
    СтрокаРодитель.Номенклатура = СтрТаблЗначений.Номенклатура;

    СтрокаПодчиненная = СтрокаРодитель.Строки.Добавить(); // 2 уровень дерева, добавляем строки подчиненные строке-родителю

    СтрокаПодчиненная.Номенклатура = "-";
    СтрокаПодчиненная.ИмяРеквизита = СтрТаблЗначений.Код;
    СтрокаПодчиненная.ЗначениеРеквизита = СтрТаблЗначений.Наименование;

    КонецЦикла;
```

Во вложении демо-обработка с обычной формой
---
Делайте программно. Это позволит избежать ограничений и условностей автоматически созданных деревьев, созданных, к примеру, из результата запроса.
- У дерева значений должна быть колонка с уникальными идентификаторами строк. Без него никак.
- Так же желательно иметь еще одну колонку, с глубиной уровня строки. Пригодится во многом, например - сл. пункт
- На различных уровнях вложенности часто нужно скрыть колонки. Тут хорошо работает условное оформление УФ. По значению в строке скрываете видимость колонки - в итоге у родителя видно наименование, а у подчиненных строк вместо наименования, в этой же колонке, можно показывать описание или дополнительную информацию

А в целом работа с ДЗ - тот еще гемор, поэтому в сложных коллекциях в для хранения значений используется обычная таблица значений, данные которой "красиво" отображаются на форме в отдельном объекте - дереве значений.
---
если не сложно, было бы не плохо в виде кода. Не особо работал с деревом
---
Я думаю лучше подойдет отчет на СКД, если не планируется заполнение дерева в таком виде
---
```1c
    &НаСервере
    Процедура ПолучитьДеревоНаСервере()

    Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ

    | Номенклатура.Родитель КАК Родитель,
    | Номенклатура.Ссылка КАК Номенклатура
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ИТОГИ ПО
    | Родитель";

    ДеревоЗнач = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

    ЗначениеВРеквизитФормы(ДеревоЗнач, "ДЗ");

    КонецПроцедуры

    &НаКлиенте
    Процедура ПолучитьДерево(Команда)
    ПолучитьДеревоНаСервере();
    КонецПроцедуры
```
---
Вариант с рекурсией.

```1c
    &НаКлиенте
    Процедура СформироватьДерево(Команда)
    СформироватьДеревоНаСервере();
    КонецПроцедуры

    &НаСервере
    Процедура СформироватьДеревоНаСервере()

    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | Т.Ссылка КАК Ссылка,
    | Т.Родитель КАК Родитель
    |ИЗ
    | Справочник.Номенклатура КАК Т");

    ТЗ = Запрос.Выполнить().Выгрузить();
    ТЗ.Индексы.Добавить("Родитель");
    ДобавитьСтрокиДереваРекурсивно(ТЗ, Дерево, Справочники.Номенклатура.ПустаяСсылка());

    КонецПроцедуры

    &НаСервере
    Процедура ДобавитьСтрокиДереваРекурсивно(ТЗ, СтрокаДерева, Родитель)

    МассивСтрок = ТЗ.НайтиСтроки(Новый Структура("Родитель", Родитель));
    Строки = СтрокаДерева.ПолучитьЭлементы();
    Для Каждого Стр Из МассивСтрок Цикл
    НоваяСтрока = Строки.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);

    ДобавитьСтрокиДереваРекурсивно(ТЗ, НоваяСтрока, Стр.Ссылка)
    КонецЦикла;

    КонецПроцедуры
```