Подготовить две собственные страницы с общим реквизитом

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

Полный модуль создаёт страницы Данные и Пояснение, начальную активную страницу и внешнюю кнопку перехода.

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

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

Подготовка

  1. Используйте только собственную пустую конфигурацию УчебнаяКонфигурацияСинтаксиса. В fixture-уроках приведены полные модули отдельных новых внешних обработок с пустой управляемой основной формой.

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

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

  4. Перед каждым тестом заново откройте соответствующую обработку: не используйте уже изменённое состояние. Точные заголовки guide-owned относятся только к подготовленной собственной форме.

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтаФорма.АвтоЗаголовок = Ложь;
    ЭтаФорма.Заголовок = "Учебные страницы guide-owned-pages-2026";
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебноеНазвание", Новый ОписаниеТипов("Строка")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.УчебноеНазвание = "Книга";
    Группа = Элементы.Добавить("УчебнаяГруппа", Тип("ГруппаФормы"));
    Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    Группа.Заголовок = "Собственные учебные данные";
    Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
    Поле = Элементы.Добавить("ПолеУчебногоНазвания", Тип("ПолеФормы"), Группа);
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "УчебноеНазвание";
    Поле.Заголовок = "Название";
    Надпись = Элементы.Добавить("УчебнаяНадпись", Тип("ДекорацияФормы"), Группа);
    Надпись.Вид = ВидДекорацииФормы.Надпись;
    Надпись.Заголовок = "Данные только в памяти формы";
    Страницы = Элементы.Добавить("УчебныеСтраницы", Тип("ГруппаФормы"), Группа);
    Страницы.Вид = ВидГруппыФормы.Страницы;
    Первая = Элементы.Добавить("УчебнаяСтраницаДанных", Тип("ГруппаФормы"), Страницы);
    Первая.Вид = ВидГруппыФормы.Страница;
    Первая.Заголовок = "Данные";
    Вторая = Элементы.Добавить("УчебнаяСтраницаПояснения", Тип("ГруппаФормы"), Страницы);
    Вторая.Вид = ВидГруппыФормы.Страница;
    Вторая.Заголовок = "Пояснение";
    ПолеСтраницы = Элементы.Добавить("НазваниеНаСтранице", Тип("ПолеФормы"), Первая);
    ПолеСтраницы.Вид = ВидПоляФормы.ПолеВвода;
    ПолеСтраницы.ПутьКДанным = "УчебноеНазвание";
    ПолеСтраницы.Заголовок = "То же название";
    Пояснение = Элементы.Добавить("ПояснениеНаСтранице", Тип("ДекорацияФормы"), Вторая);
    Пояснение.Вид = ВидДекорацииФормы.Надпись;
    Пояснение.Заголовок = "Два поля связаны с одним реквизитом, это не две записи базы";
    Страницы.ТекущаяСтраница = Первая;
    Страницы.УстановитьДействие("ПриСменеСтраницы", "СтраницыПриСмене");
    Сообщить(Страницы.ПолучитьДействие("ПриСменеСтраницы") = "СтраницыПриСмене");


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Выполнить учебное действие";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Элементы.УчебныеСтраницы.ТекущаяСтраница = Элементы.УчебнаяСтраницаПояснения;
    Сообщить("Перешли к пояснению; реквизит остался: " + ЭтаФорма.УчебноеНазвание);
КонецПроцедуры

&НаКлиенте
Процедура СтраницыПриСмене(ТекущаяСтраница)
    Если ТекущаяСтраница = Неопределено Тогда
        Возврат;
    КонецЕсли;
    Сообщить("Новая активная страница: " + ТекущаяСтраница.Имя);
КонецПроцедуры

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

  1. Создайте отдельную обработку УчебныеСтраницыТестирования и пустую управляемую форму. Назначьте ПриСозданииНаСервере, ничего не создавайте вручную.

  2. У группы УчебныеСтраницы вид Страницы. Её дочерние группы имеют вид Страница, а не ОбычнаяГруппа.

  3. Начальная ТекущаяСтраница задаётся объектом Первая. Поле на странице Данные связано с тем же УчебноеНазвание, что и поле вне страниц.

  4. Кнопка вне страниц переводит к Пояснению. Обработчик ПриСменеСтраницы получает текущую страницу одним параметром.

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

  1. После нового открытия активна Данные и собственное название Книга.

  2. Кнопка открывает Пояснение; после возврата к Данные Книга остаётся.

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

Подготовлены настоящие страницы формы с контролируемым исходным состоянием.

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

  1. Смена страницы не записывает реквизит в базу и не закрывает форму.

  2. В каждом клиенте внешний вид вкладок может отличаться; штатный UI-тест требует настоящего запуска.

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

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

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

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

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