Расширение поля формы для поля ввода.КнопкаСпискаВыбора

Свойства · ChoiceListButton

Тип: Булево, Неопределено. Содержит признак наличия/отсутствия кнопки выбора из списка. Неопределено - автоматическое определение.

Полное описание, параметры и ограничения

Расширение поля формы для поля ввода.КнопкаСпискаВыбора (Form field extension for a text box.ChoiceListButton)

Расширение поля формы для поля ввода (Form field extension for a text box)

КнопкаСпискаВыбора (ChoiceListButton)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево, Неопределено.
Содержит признак наличия/отсутствия кнопки выбора из списка.
Неопределено - автоматическое определение.
Доступность:

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

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

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

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

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

Выбрать статус из списка и отличить значение от представления

Пользователь выбирает Черновик/Опубликован/Закрыт, а реквизит хранит draft/published/closed. Список задаётся полностью в коде формы.

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

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.

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

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

  4. Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(24));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = "draft";
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Статус учебной карточки";
    Поле.СписокВыбора.Добавить("draft", "Черновик");
    Поле.СписокВыбора.Добавить("published", "Опубликован");
    Поле.СписокВыбора.Добавить("closed", "Закрыт");
    Поле.РежимВыбораИзСписка = Истина;
    Поле.РедактированиеТекста = Ложь;
    Поле.КнопкаСпискаВыбора = Истина;
    Поле.КнопкаВыпадающегоСписка = Истина;
    Поле.КнопкаОчистки = Истина;
    Поле.ВысотаСпискаВыбора = 3;
    Поле.ШиринаВыпадающегоСписка = 24;
    Поле.ОтметкаОбязательногоЗаполнения = Истина;
    Поле.АвтоВыборНезаполненного = Ложь;
    Поле.АвтоОтметкаНезаполненного = Истина;

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если ЗначениеПримера <> "draft" И ЗначениеПримера <> "published"
        И ЗначениеПримера <> "closed" Тогда
        Сообщить("Выберите один из трёх статусов. Пустой/неизвестный статус не обработан.");
        Возврат;
    КонецЕсли;
    Сообщить("Хранимый код статуса: " + ЗначениеПримера);
    Сообщить("Карточка в базе или на сайте не изменена");
КонецПроцедуры

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

  1. СписокВыбора — существующий СписокЗначений поля. Его наполняют методом Добавить; присваивать новую коллекцию свойству не нужно.

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

  3. РежимВыбораИзСписка и запрет редактирования текста направляют пользователя к подготовленным вариантам.

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

  5. Отметка обязательного заполнения визуальна. Код явно проверяет все допустимые значения до любого последующего обмена.

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

  1. Выберите Опубликован, затем кнопку: выводится код published, а не слово Опубликован.

  2. После очистки выводится просьба выбрать статус; значение не отправляется в сервис.

  3. В списке три варианта и нет автоматического назначения первого при пустом поле.

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

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

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

  1. Это учебный набор, не реальные состояния API Авито. Перед интеграцией сверяйте контракт сервиса.

  2. Представление может меняться или переводиться, поэтому обмен должен использовать код, а не подпись.

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

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

Подготовить свою форму для тестов без рабочих данных

Полный fixture создаёт два поля, статус, выбор, собственную панель, меню и безопасные учебные надписи.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

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

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

  3. В fixture назначьте событие ПриСозданииНаСервере одноимённому обработчику и вставьте весь модуль первого урока. Элементы и реквизиты вручную не создавайте. Откройте эту обработку в /TESTCLIENT.

  4. Каждый следующий урок — полный отдельный модуль формы другой обработки менеджера /TESTMANAGER с командой ВыполнитьПример. Перед каждым тестом заново откройте fixture; не выполняйте тест на изменённом состоянии предыдущего урока.

  5. Исходно первое поле Книга, второе Ручка, статус Готово, выбор book/Книга. Любые кнопки/ссылки действуют только на этой памяти формы; нет записи базы и внешних URL.

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

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

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

&НаКлиенте
Процедура УчебноеМенюЗавершено(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    Если ВыбранныйЭлемент = Неопределено Тогда
        УчебныйСтатус = "Отмена меню";
    Иначе
        Если ТипЗнч(ВыбранныйЭлемент) <> Тип("ЭлементСпискаЗначений") Тогда
            ВызватьИсключение "Результат учебного меню имеет неожиданный тип";
        КонецЕсли;
        Если ВыбранныйЭлемент.Значение <> "book" И ВыбранныйЭлемент.Значение <> "pen" Тогда
            ВызватьИсключение "Получено не учебное значение";
        КонецЕсли;
        УчебныйСтатус = "Меню: " + ВыбранныйЭлемент.Значение;
    КонецЕсли;
    ЭтаФорма.Модифицированность = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура УчебнаяНадписьНажатие()
    УчебныйСтатус = "Надпись нажата";
    ЭтаФорма.Модифицированность = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура УчебнаяНавигационнаяСсылка(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если НавигационнаяСсылкаФорматированнойСтроки <> "guide-owned-link-001" Тогда
        ВызватьИсключение "Ссылка не относится к собственному учебному сценарию";
    КонецЕсли;
    УчебныйСтатус = "Учебная ссылка обработана";
    ЭтаФорма.Модифицированность = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеЗакрытие(Команда)
    ЭтаФорма.Модифицированность = Ложь;
    ЭтаФорма.Закрыть();
КонецПроцедуры

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

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

  2. Кнопка меню вызывает неблокирующий ПоказатьВыборИзМеню; callback имеет ВыбранныйЭлемент, ДополнительныеПараметры и Экспорт.

  3. Обычная надпись использует Нажатие() без параметров. Форматированная надпись имеет Гиперссылка=Ложь, ссылку в пятом параметре конструктора и обработчик навигации на уровне формы.

  4. Событие формы навигации имеет два параметра; СтандартнаяОбработка=Ложь запрещает штатный переход. Отдельное одноимённое событие декорации не назначается.

  5. Кнопка закрытия по умолчанию закрывает только эту память формы. Она не подтверждает запись документа и не завершает клиент.

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

  1. В точной форме четыре поля: Книга, Ручка, Готово, Книга для значения book. Есть две надписи и две собственные кнопки.

  2. После самостоятельного ручного нажатия надписей меняется только статус; сайт или документ не открывается. Перед тестами заново откройте форму.

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

Готов полностью заполненный независимый fixture для обучения автоматизации форм.

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

  1. Не открывайте в рабочей конфигурации и не заменяйте собственные селекторы на первый объект приложения.

  2. Успешное построение модуля статически не является подтверждением UI-теста в 1С.

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

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

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

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

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