Добрый вечер не судите строго, опишу задачу нужно сделать ком. предложение в виде дерева.
Пример: стр: 1 класс люкс под ней номенклатура потом,

1 класс люкс
 Товар 11,000 шт 1,000 247,00 2 717,00 10,00
 Товар 11,000 шт 1,000 62,00 682,00 10,00
 Товар 5,000 шт 1,000 386,00 1 930,00 10,00

2 класс эконом
 Товар 3,000 шт 1,000 416,00 1 248,00 10,00
 Товар 14,000 шт 1,000 143,00 2 002,00 10,00

 Сделал 2 кнопки:
Добавить место ( 1 класс люкс)

```1c
    &НаСервере
    Процедура ДобавитьМестоНаСервере()
    тДерево = РеквизитФормыВЗначение("Дерево");

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

При добавление 1 позиции все хорошо добавляется а вот последующие нет, приходиться подниматься на уровень выше чтоб правильно добавилось. Прошу помощи
---
Ну тогда примерно так:

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

    // Новая строка первого уровня
    НоваяСтрока = Дерево.ПолучитьЭлементы().Добавить();

    // Начало редактирования новой строки
    Элементы.Дерево.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
    Элементы.Дерево.ИзменитьСтроку();

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

    &НаКлиенте
    Процедура ДобавитьУровень2(Команда)

    // Определения строки верхнего уровня
    ТекущаяСтрока = Элементы.Дерево.ТекущиеДанные;
    Если ТекущаяСтрока = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ТекущийРодитель = ТекущаяСтрока.ПолучитьРодителя();
    Если ТекущийРодитель = Неопределено Тогда
    ТекущийРодитель = ТекущаяСтрока;
    ИначеЕсли ТекущийРодитель.ПолучитьРодителя() <> Неопределено Тогда
    ТекущийРодитель = ТекущийРодитель.ПолучитьРодителя();
    КонецЕсли;

    // Новая строка второго уровня
    НоваяСтрока = ТекущийРодитель.ПолучитьЭлементы().Добавить();

    // Начало редактирования новой строки
    Элементы.Дерево.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
    Элементы.Дерево.ИзменитьСтроку();

    КонецПроцедуры
```
---
Если еще задача актуальна, уточните, пожалуйста. Вам необходимо реализовать две кнопки: одна добавляет строки на первый уровень дерева, другая - на второй, в подчинение текущей. Верно?
---
Да
---
Ну тогда примерно так:

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

    // Новая строка первого уровня
    НоваяСтрока = Дерево.ПолучитьЭлементы().Добавить();

    // Начало редактирования новой строки
    Элементы.Дерево.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
    Элементы.Дерево.ИзменитьСтроку();

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

    &НаКлиенте
    Процедура ДобавитьУровень2(Команда)

    // Определения строки верхнего уровня
    ТекущаяСтрока = Элементы.Дерево.ТекущиеДанные;
    Если ТекущаяСтрока = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ТекущийРодитель = ТекущаяСтрока.ПолучитьРодителя();
    Если ТекущийРодитель = Неопределено Тогда
    ТекущийРодитель = ТекущаяСтрока;
    ИначеЕсли ТекущийРодитель.ПолучитьРодителя() <> Неопределено Тогда
    ТекущийРодитель = ТекущийРодитель.ПолучитьРодителя();
    КонецЕсли;

    // Новая строка второго уровня
    НоваяСтрока = ТекущийРодитель.ПолучитьЭлементы().Добавить();

    // Начало редактирования новой строки
    Элементы.Дерево.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
    Элементы.Дерево.ИзменитьСтроку();

    КонецПроцедуры
```
---
Как выделить цветом строку 1 уровня, запретить редактировать.?
---
Условным оформлением
---
Спасибо за решение!
---
Правильно ли я понимаю, что когда сделаете код

```1c
    Стр = тДерево.строки.добавить();
    Стр.КлючСтрокиДерева=1 класс люкс;
    ЗначениеВРеквизитФормы(тДерево, "Дерево");
```

а затем его еще раз, то у вас вторая строка будет подчинена первой:
1 клас люкс
      1 клас люкс
---
Я это для примера чтоб понятно было написал, тут больше вопрос как с позициями, как их правильно добавлять?
Стр.КлючСтрокиДерева = Клиент сам записывает он туда что хочет то и пишет под каждое ком предложение разное.