Коллеги, всем доброго времени суток!

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

По данной задаче написал некий код, часть из которого отвечает за динамическое формирование тех самых параметризуемых колонок дерева:
(сам нахожусь пока что на ступени стажёра, поэтому если что сильно камнями не закидывайте, пожалуйста :) )

```1c
    &НаСервере
    Процедура ЗаполнитьДеревоСотрудников()

    ///....

    Выборка = РезультатТолькоСКлючевыми.Выбрать();

    // Задаем реквизиты по умолчанию
    РеквизитыПоУмолчанию = Новый Массив;
    РеквизитыПоУмолчанию.Добавить("НомерСтроки");
    РеквизитыПоУмолчанию.Добавить("ФИО");
    РеквизитыПоУмолчанию.Добавить("Должность");

    // Очищаем реквизиты дерева для дальнейшего заполнения
    УдаляемыеРеквизиты = Новый Массив;
    РеквизитыДляУдаления = ПолучитьРеквизиты("Тест_ПодобранныеСотрудники");

    // Удаляем ранее созданные реквизиты, если таковые были
    Для каждого РеквизитУдаления Из РеквизитыДляУдаления Цикл

    Если РеквизитыПоУмолчанию.Найти(РеквизитУдаления.Имя) = Неопределено Тогда

    УдаляемыеРеквизиты.Добавить("Тест_ПодобранныеСотрудники." + РеквизитУдаления.Имя);
    // Удаляем элемент формы
    Элементы.Удалить(Элементы["Тест_ПодобранныеСотрудники" + РеквизитУдаления.Имя]);

    КонецЕсли;

    КонецЦикла;

    Если ЗначениеЗаполнено(УдаляемыеРеквизиты) Тогда
    ИзменитьРеквизиты(, УдаляемыеРеквизиты);
    КонецЕсли;

    ОчиститьДеревоСотрудниковНаСервере();

    // Заполняем дерево подобранных сотрудников
    Счетчик = 0;
    Пока Выборка.Следующий() Цикл

    //Перебираем все массивы элементов
    Для каждого МассивКлючевыхЭлементов Из МассивМассивовКлючевыхЭлементов Цикл

    Если ЗначениеЗаполнено(МассивКлючевыхЭлементов) Тогда
    //Перебираем все элементы каждого массива
    Для каждого КлючевойЭлемент Из МассивКлючевыхЭлементов Цикл

    НаименованиеКолонки = КлючевойЭлемент.Наименование;
    БезопасноеНаименование = ИсключитьЗапрещенныеСимволыНаСервере(НаименованиеКолонки);

    ВсеРеквизитыДерева = ПолучитьРеквизиты("Тест_ПодобранныеСотрудники");
    РеквизитДобавлен = Ложь;

    Для каждого Реквизит Из ВсеРеквизитыДерева Цикл
    Если Реквизит.Имя = БезопасноеНаименование Тогда
    РеквизитДобавлен = Истина;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если НЕ РеквизитДобавлен Тогда

    РеквизитыДерева = Новый Массив;
    РеквизитыДерева.Добавить(Новый РеквизитФормы(БезопасноеНаименование,
    Новый ОписаниеТипов("Строка"),
    "Тест_ПодобранныеСотрудники",
    НаименованиеКолонки,
    Истина));
    ИзменитьРеквизиты(РеквизитыДерева);

    ЭлементДерева = Элементы.Добавить("Тест_ПодобранныеСотрудники" +
    БезопасноеНаименование,
    Тип("ПолеФормы"),
    Элементы.Тест_ПодобранныеСотрудники);

    ЭлементДерева.Вид = ВидПоляФормы.ПолеВвода;
    ЭлементДерева.ПутьКДанным = "Тест_ПодобранныеСотрудники." + БезопасноеНаименование;

    КонецЕсли;

    ДеревоСФормыГотовое = РеквизитФормыВЗначение("Тест_ПодобранныеСотрудники");

    СтрокаДерева = ДеревоСФормыГотовое.Строки.Добавить();

    Счетчик = Счетчик + 1;
    СтрокаДерева.НомерСтроки = Счетчик;
    СтрокаДерева.ФИО = Выборка.Сотрудник;
    СтрокаДерева.Должность = Выборка.Должность;

    ЗначениеВРеквизитФормы(ДеревоСФормыГотовое, "Тест_ПодобранныеСотрудники");

    КонецЦикла;

    КонецЕсли;

    КонецЦикла;

    КонецЦикла;

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

    &НаСервере
    Процедура ОчиститьДеревоСотрудниковНаСервере()

    ДеревоСотрудников = РеквизитФормыВЗначение("ПодобранныеСотрудники");
    ДеревоСотрудников.Строки.Очистить();
    ЗначениеВРеквизитФормы(ДеревоСотрудников, "ПодобранныеСотрудники");

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

- единоразово работа данного алгоритма на форме отображается корректно, колонки формируются динамически (пока только для одной дополнительной колонки реализовал), но при повторном отборе с другим параметром строки добавляются к ранее выведенным строкам на форме (Прикрепленное изображение), тоесть дерево по каким-то причинам не очищается. ЧЯДНТ? Заранее большое спасибо
---
Мда, только после публикации здесь обнаружил, что очищаю я не то дерево на форме 😂 Вопрос решён, всем большое спасибо!)
---
Мда, только после публикации здесь обнаружил, что очищаю я не то дерево на форме 😂 Вопрос решён, всем большое спасибо!)