На форме есть реквизит "Дерево значений" с двумя колонками "значение"(число) и наименование(строка). В модуле программно заполняется дерево( строке родителю присваивается пустое значение)

       СтрокаРодитель = ДерЗнач.Строки.Добавить();
 СтрокаРодитель.Значение="";
 СтрокаРодитель.Наименование="";

Затем, после заполнения подчиненных строк передаю значение через метод "Значение в реквизит формы".
ЗначениеВРеквизитФормы(ДерЗнач,"ДеревоЗначений");

По нажатию кнопки на форме, в строку родитель в колонку значение подставляется сумма значений, а в наименование кол-во значений. Проблема в том что на первый раз код отрабатывает нормально, а на вторую попытку дерево заполняется, но при попытке подставить сумму и кол-во выдает ошибку:
Значение не является значением объектного типа (Значение)
{Расширение_учебное Обработка.ВнешняяОбработка1.Форма.ВсеЗадания.Форма(185)}: ДЗ.Значение=СуммаЗначений;
Отладчик показывает что когда код отрабатывает второй раз, у переменной ДЗ тип "неопределено", хотя на первый раз "ДанныеФормыЭлементДерева". Код кнопки сумма и значение:

Тестовая=ЭтаФорма.ДеревоЗначений;
 ДЗ=Тестовая.НайтиПоИдентификатору(0);
 ДЗ.Значение=СуммаЗначений;
 ДЗ.Наименование=КоличествоЗначений;

Не могу понять с чем это связано. Между первым и вторым нажатием происходит вызов процедуры Очистить:

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

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

Ниже весь код:
```1c
    &НаСервере
    Процедура ЗаполнитьТабЗначНаСервере()

    Очистить();
    ВременнаяПеременная=";
    СуммаЗначений=0;
    КоличествоЗначений=0;

    ДерЗнач= Новый ДеревоЗначений;

    ДерЗнач.Колонки.Добавить("Значение");
    ДерЗнач.Колонки.Добавить("Наименование");

    СтрокаРодитель = ДерЗнач.Строки.Добавить();
    СтрокаРодитель.Значение=";
    СтрокаРодитель.Наименование=";

    Для Индекс=1 по Объект.Число Цикл

    ПодчиненнаяСтрока=СтрокаРодитель.Строки.Добавить();
    ПодчиненнаяСтрока.Значение = Индекс;

    СуммаЗначений=СуммаЗначений+Индекс;

    ПеревестиЧислоВСтроку(Индекс,ВременнаяПеременная);
    ПодчиненнаяСтрока.Наименование=ВременнаяПеременная;

    КонецЦикла;

    КоличествоЗначений=Индекс-1;

    ЗначениеВРеквизитФормы(ДерЗнач,"ДеревоЗначений");
    КонецПроцедуры

    &НаКлиенте
    Процедура СуммаИКоличествоДерЗнач(Команда)

    Тестовая=ЭтаФорма.ДеревоЗначений;
    ДЗ=Тестовая.НайтиПоИдентификатору(0);
    ДЗ.Значение=СуммаЗначений;
    ДЗ.Наименование=КоличествоЗначений;

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

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

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

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

    &НаСервере
    Процедура ПеревестиЧислоВСтроку(Число,ВремПер)

    ФорматнаяСтрока="Л=ru_RU";

    ПараметрыПредметаИсчесления=" , , , , , , , , 0";

    //Сообщить(ЧислоПрописью(Число,ФорматнаяСтрока,ПараметрыПредметаИсчесления));

    ВремПер=(ЧислоПрописью(Число,ФорматнаяСтрока,ПараметрыПредметаИсчесления));

    КонецПроцедуры
```
---
Видимо, придется изучить базу - что такое ИдентификаторСтроки у коллекции формы.
---
Проблема описана в (7)
ИдентификаторСтроки и Индекс - не одно и то же.
---
А смысл? Все равно никто не понимает, что делает этот код и откуда в нем берутся мифические переменные СуммаЗначений и КоличествоЗначений.
А ты сам-то понимаешь?

```1c
    &НаКлиенте
    Процедура СуммаИКоличествоДерЗнач(Команда)

    Тестовая=ЭтаФорма.ДеревоЗначений;
    ДЗ=Тестовая.НайтиПоИдентификатору(0);
    ДЗ.Значение=СуммаЗначений;
    ДЗ.Наименование=КоличествоЗначений;

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

// Сначала надо получить идентификатор строки у элемента на форме, прежде, чем искать его в данных формы.
---
А еже ли в поле "Число" что-то больше 0 указать тоже не заполняется?
---
Дерево то заполняется, оно на вторую попытку заполнить строку родитель выдает ошибку
---
Видимо, придется изучить базу - что такое ИдентификаторСтроки у коллекции формы.
---
И что ты находишь по Тестовая.НайтиПоИдентификатору(0)?
---
Ну я думал это поиск нулевой строки(родителя), там в принципе синтаксис дает на выбор 2 метода, НайтиПоИдентификатору и ПолучитьЭлементы
---
Ну я думал А ты не думай, ты проверь. Отладчик тебе для чего даден?
---
А второй раз? Ты отладчик-то поставь на строку с ошибкой.
---
А на вторую попытку, вот так. Вот я и не могу понять в чем проблема
---
Проблема описана в (7)
ИдентификаторСтроки и Индекс - не одно и то же.
---
А можно конкретный ответ что сделать? Задание надо сделать сегодня, нет времени, потом уже спокойно займусь изучением. Заранее благодарю.
---
А смысл? Все равно никто не понимает, что делает этот код и откуда в нем берутся мифические переменные СуммаЗначений и КоличествоЗначений.
А ты сам-то понимаешь?

```1c
    &НаКлиенте
    Процедура СуммаИКоличествоДерЗнач(Команда)

    Тестовая=ЭтаФорма.ДеревоЗначений;
    ДЗ=Тестовая.НайтиПоИдентификатору(0);
    ДЗ.Значение=СуммаЗначений;
    ДЗ.Наименование=КоличествоЗначений;

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

// Сначала надо получить идентификатор строки у элемента на форме, прежде, чем искать его в данных формы.
---
Долго не мог понять почему не работает метод Текущая строка, оказывается на форме у меня дерево называется ДеревоЗначений1. Вот исправленный код, если кто-то еще столкнется

```1c
    &НаКлиенте
    Процедура СуммаИКоличествоДерЗнач(Команда)

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

    ТекущаяСтрока.Значение=СуммаЗначений;
    ТекущаяСтрока.Наименование=КоличествоЗначений;

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

В общем, благодарю за пинок в направлении где искать ошибку.
---
Вот примерно так, да.
НО! Запутаешься в "текущих строках".
Привыкай именовать переменные нормально. Например:

```1c
    ИдентификаторТекущейСтроки = Элементы.ДеревоЗначений.ТекущаяСтрока;
    ДанныеТекущейСтроки = ДеревоЗначений.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
```

или сразу

```1c
    ДанныеСтрокиДерева = ДеревоЗначений.НайтиПоИдентификатору(Элементы.ДеревоЗначений.ТекущаяСтрока);
```

Поверь, самому проще потом будет.
---
Учту
---
Более чем достаточные ответы есть в (7), (11) и (13). Более детально это уже будет работа за вас. А зачем нам потом такие коллеги? Да, нет ничего плохого в провале задания по причине недостатка знаний и навыков. На то и учёба.
---
Я получил тот толчок, что мне был нужен. Как сделаю задание отмечу ответ как решение
---
Переменные СуммаЗначений и КоличествоЗначений, созданы в реквизите формы и в коде идет обращение именно к этим реквизитам и они изменяются.