Полный серверный обработчик создаёт иерархию в памяти: группа Канцтовары, внутри неё Книга и Ручка.
Где и как запускать
Полный модуль формы новой тестируемой внешней обработки; не модуль менеджера тестов.
Подготовка
Первый урок содержит полный модуль формы новой внешней обработки УчебноеДеревоТестирования в собственной пустой конфигурации УчебнаяКонфигурацияСинтаксиса.
Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.
В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.
В тестируемом клиенте откройте именно УчебноеДеревоТестирования. Перед каждым тестом закройте и снова откройте его: исходно виден свёрнутый узел G-00, внутри него Книга A-01 и Ручка B-02.
ДеревоЗначений создаётся только в памяти формы. Это не иерархический справочник и не рабочий динамический список; тест не записывает и не удаляет объекты базы.
Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭтаФорма.АвтоЗаголовок = Ложь;
ЭтаФорма.Заголовок = "Учебное дерево guide-owned-tree-2026";
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Товары", Новый ОписаниеТипов("ДеревоЗначений")));
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Строка"), "Товары", "Код"));
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Наименование", Новый ОписаниеТипов("Строка"), "Товары", "Название"));
НовыеРеквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)), "Товары", "Количество"));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
Данные = Новый ДеревоЗначений;
Данные.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)));
ГруппаТоваров = Данные.Строки.Добавить();
ГруппаТоваров.Код = "G-00";
ГруппаТоваров.Наименование = "Учебные канцтовары";
ГруппаТоваров.Количество = 0;
Книга = ГруппаТоваров.Строки.Добавить();
Книга.Код = "A-01";
Книга.Наименование = "Книга";
Книга.Количество = 3;
Ручка = ГруппаТоваров.Строки.Добавить();
Ручка.Код = "B-02";
Ручка.Наименование = "Ручка";
Ручка.Количество = 1;
ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Товары");
Таблица = ЭтаФорма.Элементы.Добавить("ТаблицаТоваров", Тип("ТаблицаФормы"));
Таблица.ПутьКДанным = "Товары";
Таблица.Заголовок = "Учебные товары";
Таблица.Шапка = Истина;
Таблица.АвтоВводНезаполненного = Ложь;
Таблица.АвтоВводНовойСтроки = Ложь;
Для Каждого ИмяКолонки Из СтрРазделить("Код,Наименование,Количество", ",") Цикл
Колонка = Элементы.Добавить("Товары" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
Колонка.Вид = ВидПоляФормы.ПолеВвода;
Колонка.ПутьКДанным = "Товары." + ИмяКолонки;
Колонка.Заголовок = ИмяКолонки;
КонецЦикла;
Таблица.Отображение = ОтображениеТаблицы.Дерево;
Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
Таблица.ТолькоПросмотр = Истина;
Элементы.ТоварыКоличество.Формат = "ЧГ=0;ЧДЦ=0";
КонецПроцедурыРазбор по шагам
В новой внешней обработке создайте пустую основную управляемую форму. В событии ПриСозданииНаСервере назначьте эту процедуру; реквизиты и элементы вручную не добавляйте.
Тип реквизита Товары — ДеревоЗначений, а не ТаблицаЗначений. Колонки задаются у дерева; корневые строки добавляются в Данные.Строки.
У корневой строки ГруппаТоваров есть собственная коллекция Строки. Два вызова Добавить у неё создают дочерние строки, не новые корни.
ЗначениеВРеквизитФормы переносит дерево в данные формы. Режим отображения Дерево включает иерархическую визуализацию.
НеРаскрывать задаёт исходно свёрнутое отображение. ТолькоПросмотр запрещает редактирование этой учебной поверхности, но не чтение и раскрытие.
Как проверить результат
После открытия виден G-00/Учебные канцтовары/0. После ручного раскрытия под ним A-01/Книга/3 и B-02/Ручка/1.
После нового открытия узел снова свёрнут и все вымышленные значения исходные.
Ожидаемый результат
Готово собственное воспроизводимое дерево для UI-тестов без записи базы.
На что обратить внимание
Количество корневых строк равно 1, а число всех узлов равно 3: это разные величины.
Проверка имени конфигурации — предохранитель, не замена отдельной учебной базе.
Наличие кода не доказывает, что форма уже была открыта и проверена в 1С.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.