Салют, друзья. Выполняю учебную задачу. Необходимо на форму вывести список наименования мебели и её составных частей. Составные части берутся из регистра сведений, а сама мебель из одноименного справочника. После составления запроса и создания дерева значений написал такой код
```1c
    Процедура ЗаполнитьДерево(СтрокиДерева, Выборка)
    Пока Выборка.Следующий() Цикл
    НовСтрока = СтрокиДерева.Добавить();
    НовСтрока.Код = Выборка.Код;
    НовСтрока.ПредметМебели = Выборка.ПредметМебели;

    Если ЗначениеЗаполнено(Выборка.СоставныеЧасти) Тогда
    СтрокиСети = НовСтрока.Строки.Добавить();
    СтрокиСети.СоставныеЧасти = Выборка.СоставныеЧасти;
    СтрокиСети.Код = Неопределено;
    КонецЕсли;

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

Как мне сделать нормальное отображение с иерархией неповторяющихся данных.
---
Всем откликнувшимся, спасибо за предложения, но я решил дописать свой код и теперь справочники в первой колонке не повторяются напротив каждого значения. вот код:

```1c
    Процедура ЗаполнитьДерево(СтрокиДерева, Выборка)
    Пока Выборка.Следующий() Цикл
    НовСтрока = СтрокиДерева.Добавить();
    НовСтрока.ПредметМебели = Выборка.ПредметМебели ;

    Если ЗначениеЗаполнено(Выборка.СоставныеЧасти) Тогда
    Строка = НовСтрока.Строки.Добавить();
    Строка.СоставныеЧасти= Выборка.СоставныеЧасти;
    Пока Выборка.Следующий() И Выборка.ПредметМебели = НовСтрока.ПредметМебели Цикл
    Если ЗначениеЗаполнено(Выборка.СоставныеЧасти) Тогда
    НовСтрокаСС = НовСтрока.Строки.Добавить();
    НовСтрокаСС.СоставныеЧасти= Выборка.СоставныеЧасти;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;

    ВыборкаПод = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    Если ВыборкаПод.Количество() <> 0 Тогда
    ЗаполнитьДерево(НовСтрока.Строки, ВыборкаПод);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
---
Формы управляемые или обычные?
---
управляемая
---
Можно предложить использовать условное оформление - устанавливать видимость ложь последней колонке, если заполнены первые две, и наоборот - устанавливать ложь первым двум, если заполнена третья.
Поведение будет интересным, и может быть устроит.
---
Предложение интересное, но не) Хотелось бы по людски до ума довести
---
А точно уверены что нужно дерево на форме, а не динамический список?
а так, есть такие функции РеквизитФормыВЗначение и обратная ЗначениевРеквизитФормы
---
Насчёт функций в курсе, оодна из них в предыдущей процедуре, где и запрос . Да, через дерево значений, одно из условий задачи. Мол, построить дерево руками, как я понял
---
Красавчик! Хочешь поупражняться в группировке динамического списка?
---
Всем откликнувшимся, спасибо за предложения, но я решил дописать свой код и теперь справочники в первой колонке не повторяются напротив каждого значения. вот код:

```1c
    Процедура ЗаполнитьДерево(СтрокиДерева, Выборка)
    Пока Выборка.Следующий() Цикл
    НовСтрока = СтрокиДерева.Добавить();
    НовСтрока.ПредметМебели = Выборка.ПредметМебели ;

    Если ЗначениеЗаполнено(Выборка.СоставныеЧасти) Тогда
    Строка = НовСтрока.Строки.Добавить();
    Строка.СоставныеЧасти= Выборка.СоставныеЧасти;
    Пока Выборка.Следующий() И Выборка.ПредметМебели = НовСтрока.ПредметМебели Цикл
    Если ЗначениеЗаполнено(Выборка.СоставныеЧасти) Тогда
    НовСтрокаСС = НовСтрока.Строки.Добавить();
    НовСтрокаСС.СоставныеЧасти= Выборка.СоставныеЧасти;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;

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