Создать дерево с группой и двумя учебными товарами

Учебные задачи

Полный серверный обработчик создаёт иерархию в памяти: группа Канцтовары, внутри неё Книга и Ручка.

Где и как запускать

Полный модуль формы новой тестируемой внешней обработки; не модуль менеджера тестов.

Подготовка

  1. Первый урок содержит полный модуль формы новой внешней обработки УчебноеДеревоТестирования в собственной пустой конфигурации УчебнаяКонфигурацияСинтаксиса.

  2. Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.

  3. В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.

  4. В тестируемом клиенте откройте именно УчебноеДеревоТестирования. Перед каждым тестом закройте и снова откройте его: исходно виден свёрнутый узел G-00, внутри него Книга A-01 и Ручка B-02.

  5. ДеревоЗначений создаётся только в памяти формы. Это не иерархический справочник и не рабочий динамический список; тест не записывает и не удаляет объекты базы.

  6. Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтаФорма.АвтоЗаголовок = Ложь;
    ЭтаФорма.Заголовок = "Учебное дерево guide-owned-tree-2026";
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Товары", Новый ОписаниеТипов("ДеревоЗначений")));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Строка"), "Товары", "Код"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Наименование", Новый ОписаниеТипов("Строка"), "Товары", "Название"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)), "Товары", "Количество"));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Данные = Новый ДеревоЗначений;
    Данные.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)));
    ГруппаТоваров = Данные.Строки.Добавить();
    ГруппаТоваров.Код = "G-00";
    ГруппаТоваров.Наименование = "Учебные канцтовары";
    ГруппаТоваров.Количество = 0;
    Книга = ГруппаТоваров.Строки.Добавить();
    Книга.Код = "A-01";
    Книга.Наименование = "Книга";
    Книга.Количество = 3;
    Ручка = ГруппаТоваров.Строки.Добавить();
    Ручка.Код = "B-02";
    Ручка.Наименование = "Ручка";
    Ручка.Количество = 1;

    ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Товары");
    Таблица = ЭтаФорма.Элементы.Добавить("ТаблицаТоваров", Тип("ТаблицаФормы"));
    Таблица.ПутьКДанным = "Товары";
    Таблица.Заголовок = "Учебные товары";
    Таблица.Шапка = Истина;
    Таблица.АвтоВводНезаполненного = Ложь;
    Таблица.АвтоВводНовойСтроки = Ложь;
    Для Каждого ИмяКолонки Из СтрРазделить("Код,Наименование,Количество", ",") Цикл
        Колонка = Элементы.Добавить("Товары" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
        Колонка.Вид = ВидПоляФормы.ПолеВвода;
        Колонка.ПутьКДанным = "Товары." + ИмяКолонки;
        Колонка.Заголовок = ИмяКолонки;
    КонецЦикла;
    Таблица.Отображение = ОтображениеТаблицы.Дерево;
    Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
    Таблица.ТолькоПросмотр = Истина;
    Элементы.ТоварыКоличество.Формат = "ЧГ=0;ЧДЦ=0";
КонецПроцедуры

Разбор по шагам

  1. В новой внешней обработке создайте пустую основную управляемую форму. В событии ПриСозданииНаСервере назначьте эту процедуру; реквизиты и элементы вручную не добавляйте.

  2. Тип реквизита Товары — ДеревоЗначений, а не ТаблицаЗначений. Колонки задаются у дерева; корневые строки добавляются в Данные.Строки.

  3. У корневой строки ГруппаТоваров есть собственная коллекция Строки. Два вызова Добавить у неё создают дочерние строки, не новые корни.

  4. ЗначениеВРеквизитФормы переносит дерево в данные формы. Режим отображения Дерево включает иерархическую визуализацию.

  5. НеРаскрывать задаёт исходно свёрнутое отображение. ТолькоПросмотр запрещает редактирование этой учебной поверхности, но не чтение и раскрытие.

Как проверить результат

  1. После открытия виден G-00/Учебные канцтовары/0. После ручного раскрытия под ним A-01/Книга/3 и B-02/Ручка/1.

  2. После нового открытия узел снова свёрнут и все вымышленные значения исходные.

Ожидаемый результат

Готово собственное воспроизводимое дерево для UI-тестов без записи базы.

На что обратить внимание

  1. Количество корневых строк равно 1, а число всех узлов равно 3: это разные величины.

  2. Проверка имени конфигурации — предохранитель, не замена отдельной учебной базе.

  3. Наличие кода не доказывает, что форма уже была открыта и проверена в 1С.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.