Есть список значений, который хранит в себе элементы справочника "Информационные Базы". При выборе какого-то или каких-то элементов (выделенные строки) при нажатии на определенную кнопку, эти элементы должны мигрировать в Дерево значений. У этого дерева реквизит так же имеет тип Справочники.ИнформационныеБазы.

Не приходилось работать с ДЗ, поэтому не совсем понимаю, как нужно заполнять это дерево значений.

```1c
    &НаКлиенте
    Процедура ПереместитьГлавнуюБазу(Команда)
    ВыделенныеСтроки = Элементы.ИнформационныеБазы.ВыделенныеСтроки;
    Если ВыделенныеСтроки.Количество()<>0 Тогда
    //ЭлементыДерева = ИерархияИБ.ПолучитьЭлементы();
    //СтрокаДерева = ЭлементыДерева.Получить(0);
    //ПодстрокаДерева = СтрокаДерева.ПолучитьЭлементы();
    ПереместитьГлавнуюБазуНасервере();
    Иначе
    Сообщить("Выберите информационную базу из списка!");
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Процедура ПереместитьГлавнуюБазуНасервере()
    ДанныеДереваИБ = РеквизитФормыВЗначение("ИерархияИБ");
    //ДанныеДереваИБ.Колонки.Добавить();
    КонецПроцедуры
```

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

Можно так:

```1c
    &НаКлиенте
    Процедура ПереместитьГлавнуюБазу(Команда)
    ЭлементыДерева = ИерархияИБ.ПолучитьЭлементы();
    НовыйЭлемент = ЭлементыДерева.Добавить();
    НовыйЭлемент.ГлавнаяБаза = Элементы.ИнформационныеБазы.ТекущиеДанные.Значение;
    КонецПроцедуры
```

ЗЫ. Вообще, смысл перегонять "ДанныеФормыДерево" в "ДеревоЗначений" даже на сервере есть только тогда, когда нужны какие-то продвинутые функции этого самого дерева. Если нужен простой обход или простое заполнение - то это только лишние телодвижения.
---
Если пользоваться той функцией что вы написали, то неплохо бы вернуть значение на форму:

```1c
    &НаСервере
    Процедура ПереместитьГлавнуюБазуНасервере(База)
    ДанныеДереваИБ = РеквизитФормыВЗначение("ИерархияИБ");
    //ДанныеДереваИБ.Колонки.Добавить();
    НовыйЭлемент = ДанныеДереваИБ.Строки.Добавить();
    НовыйЭлемент.ГлавнаяБаза = База;
    ЗначениеВРеквизитФормы(ДанныеДереваИБ,"ИерарзияИБ");
    КонецПроцедуры
```

А вообще с деревом можно работать с клиента, и даже лучше.
А вашем случае будет как-то так:

```1c
    Нстр = ДанныеДереваИБ.ПолучитьЭлементы().Добавить();
    Нстр.ГлавнаяБаза = База
```

У каждого Нстр есть метод ПолучитьЭлементы(). Так и образуется дерево.
---
Через свойство "Строки". Оно есть как у корня ("ИерархияИБ"), так и у каждого элемента дерева.
---
Что -то вроде этого?

```1c
    &НаКлиенте
    Процедура ПереместитьГлавнуюБазу(Команда)
    ВыделенныеСтроки = Элементы.ИнформационныеБазы.ВыделенныеСтроки;
    КоличествоСтрок = ВыделенныеСтроки.Количество();
    Пока КоличествоСтрок > 0 Цикл
    ТекЭлементСписка = Элементы.ИнформационныеБазы.ТекущиеДанные;
    ПереместитьГлавнуюБазуНасервере(ТекЭлементСписка.Значение);
    КоличествоСтрок = КоличествоСтрок - 1;
    //Если ВыделенныеСтроки.Количество()<>0 Тогда
    // //ЭлементыДерева = ИерархияИБ.ПолучитьЭлементы();
    // //СтрокаДерева = ЭлементыДерева.Получить(0);
    // //ПодстрокаДерева = СтрокаДерева.ПолучитьЭлементы();
    // ПереместитьГлавнуюБазуНасервере();
    //Иначе
    // Сообщить("Выберите информационную базу из списка!");
    //КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    &НаСервере
    Процедура ПереместитьГлавнуюБазуНасервере(База)
    ДанныеДереваИБ = РеквизитФормыВЗначение("ИерархияИБ");
    //ДанныеДереваИБ.Колонки.Добавить();
    НовыйЭлемент = ДанныеДереваИБ.Строки.Добавить();
    НовыйЭлемент.ГлавнаяБаза = База;
    КонецПроцедуры
```

Ну таким образом значение все равно не мигрировало в дерево значений, что я упустила?
---
Если пользоваться той функцией что вы написали, то неплохо бы вернуть значение на форму:

```1c
    &НаСервере
    Процедура ПереместитьГлавнуюБазуНасервере(База)
    ДанныеДереваИБ = РеквизитФормыВЗначение("ИерархияИБ");
    //ДанныеДереваИБ.Колонки.Добавить();
    НовыйЭлемент = ДанныеДереваИБ.Строки.Добавить();
    НовыйЭлемент.ГлавнаяБаза = База;
    ЗначениеВРеквизитФормы(ДанныеДереваИБ,"ИерарзияИБ");
    КонецПроцедуры
```

А вообще с деревом можно работать с клиента, и даже лучше.
А вашем случае будет как-то так:

```1c
    Нстр = ДанныеДереваИБ.ПолучитьЭлементы().Добавить();
    Нстр.ГлавнаяБаза = База
```

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

Можно так:

```1c
    &НаКлиенте
    Процедура ПереместитьГлавнуюБазу(Команда)
    ЭлементыДерева = ИерархияИБ.ПолучитьЭлементы();
    НовыйЭлемент = ЭлементыДерева.Добавить();
    НовыйЭлемент.ГлавнаяБаза = Элементы.ИнформационныеБазы.ТекущиеДанные.Значение;
    КонецПроцедуры
```

ЗЫ. Вообще, смысл перегонять "ДанныеФормыДерево" в "ДеревоЗначений" даже на сервере есть только тогда, когда нужны какие-то продвинутые функции этого самого дерева. Если нужен простой обход или простое заполнение - то это только лишние телодвижения.
---
Ой, большое спасибо за подробное описание и наглядный пример!