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

Свойства · ChoiceList

Тип: СписокЗначений. Содержит список значений для осуществления выбора по нажатию кнопки списка выбора.

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

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

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

СписокВыбора (ChoiceList)

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

Использование:
Только чтение.
Описание:
Тип: СписокЗначений.
Содержит список значений для осуществления выбора по нажатию кнопки списка выбора.
Доступность:

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

Примечание:
Изменение состава списка на клиенте не требует обращения к серверу.
Использование в версии:

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

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

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

Выбрать типизированный статус в полностью созданном поле формы

Список для выбора получаем от менеджера перечисления с обязательными параметрами. В реквизите формы хранится значение перечисления, не подпись.

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

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

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу с именем корня конфигурации Учебная85. Не меняйте рабочие конфигурации ради этого примера.

  2. Перечисления → Добавить: УчебныйСтатус, синоним Учебный статус. Значения в порядке Черновик, Готов, Отменен; синонимы соответственно Черновик, Готов к проверке, Отменён.

  3. Модуль менеджера оставьте пустым, формы/макеты не добавляйте. Обновите конфигурацию базы данных.

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

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

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

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

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

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

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

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

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

  1. До создания реквизита проверяем собственную учебную конфигурацию и наличие перечисления.

  2. ПолучитьДанныеВыбора получает структуру с Отбор и СтрокаПоиска, даже когда поиск и отбор пустые.

  3. СписокВыбора наполняем типизированными значениями и их представлениями. Начальное значение Черновик задано явно.

  4. КнопкаОчистки возвращает пустое значение перечисления, которое обрабатывается отдельной веткой.

  5. Проверяем тип и сравниваем с конкретным значением Готов, не с текстом подписи.

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

  1. Выберите Готов к проверке: оба сравнения Истина, представление Готов к проверке.

  2. Выберите Черновик: проверка типа Истина, сравнение с Готов Ложь — это ожидаемо.

  3. Очистите поле: сообщение о невыбранном статусе, обращений к базе записи нет.

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

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

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

  1. Это не универсальная строковая выпадающая коллекция: реквизит имеет конкретный тип учебной конфигурации.

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

  3. Изменение поля относится только к памяти формы, не к статусам рабочих заказов.

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

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

Пользователь выбирает Черновик/Опубликован/Закрыт, а реквизит хранит 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. Красная отметка обязательности не запускает проверку вашего внешнего обмена автоматически.

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

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

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

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

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