ГруппаФормы.ПолучитьДействие

Методы · GetAction

Получает имя установленного обработчика события.

Синтаксис

ПолучитьДействие(<ИмяСобытия>)
Полное описание, параметры и ограничения

ГруппаФормы.ПолучитьДействие (FormGroup.GetAction)

ГруппаФормы (FormGroup)

ПолучитьДействие (GetAction)

Доступен, начиная с версии 8.2.

Синтаксис:
ПолучитьДействие(<ИмяСобытия>)
Параметры:

<ИмяСобытия> (обязательный)
Тип: Строка.
Имя события, для которого устанавливается новое действие.
Возвращаемое значение:
Тип: Строка.

Описание:

Получает имя установленного обработчика события.

Доступность:

Сервер, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

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

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

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

Полный модуль собственной тестируемой формы /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. Создайте отдельную внешнюю обработку с новой пустой управляемой основной формой. Каждый урок — свой полный модуль и отдельная копия формы.

  2. Не создавайте вручную УчебноеНазвание, УчебнаяГруппа, ПолеУчебногоНазвания и УчебнаяНадпись: код добавляет их сам.

  3. В событиях формы назначьте ПриСозданииНаСервере одноимённому обработчику. Вставьте весь модуль на уровне модуля, включая клиентские процедуры.

  4. Откройте сохранённую учебную EPF в настольном тонком/толстом или веб-клиенте. Данные принадлежат только этой форме; справочники, документы и регистры не используются.

  5. Внешняя кнопка находится вне учебной группы и остаётся доступной для обратного переключения. Код не обходит ограничения на внешние обработки.

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


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

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

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

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

  1. Создаём контейнер Страницы и две дочерние Страница; их виды не взаимозаменяемы.

  2. В первой странице второе поле связано с тем же УчебноеНазвание: отдельный реквизит не создаётся.

  3. Сервер назначает ПриСменеСтраницы и проверяет имя обработчика.

  4. Клиентский обработчик имеет один параметр ТекущаяСтраница и только сообщает её имя.

  5. Кнопка передаёт ТекущаяСтраница объект ГруппаФормы, не строку имени.

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

  1. Проверка обработчика Истина; ручное переключение сообщает имя выбранной учебной страницы.

  2. Измените название на странице Данные: верхнее поле показывает то же значение. Кнопка выбирает Пояснение, не создавая записи.

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

Разобраны виды групп, shared-реквизит и точная сигнатура события страниц.

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

  1. Не присваивайте строку имени вместо ссылки на элемент страницы.

  2. Переключение страниц — не загрузка нового документа и не запись базы.

  3. Вид вкладок и дополнительные настройки страницы зависят от клиента.

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

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

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

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

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