ФормаКлиентскогоПриложения.ПоказатьВыборИзСписка

Методы · ShowChooseFromList

Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области.

Синтаксис

ПоказатьВыборИзСписка(<ОписаниеОповещенияОЗакрытии>, <СписокЗначений>, <ЭлементФормы>, <НачальноеЗначение>)

Примеры платформы

Список = Новый СписокЗначений;
Список.Добавить("Доставка");
Список.Добавить("Разгрузка");
Список.Добавить("Картинка",,,БиблиотекаКартинок.Картинка1);
Оп = Новый ОписаниеОповещения("ВыполнитьПослеВыбора", ЭтотОбъект, Параметр);
ПоказатьВыборИзСписка(Оп, Список, Элементы.Поле1);
Полное описание, параметры и ограничения

ФормаКлиентскогоПриложения.ПоказатьВыборИзСписка (ClientApplicationForm.ShowChooseFromList)

ФормаКлиентскогоПриложения (ClientApplicationForm)

ПоказатьВыборИзСписка (ShowChooseFromList)

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

Синтаксис:
ПоказатьВыборИзСписка(<ОписаниеОповещенияОЗакрытии>, <СписокЗначений>, <ЭлементФормы>, <НачальноеЗначение>)
Параметры:

<ОписаниеОповещенияОЗакрытии> (обязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения выбора из списка со следующими параметрами:
<ВыбранныйЭлемент> - выбранный элемент списка или Неопределено, если пользователь отказался от выбора;

<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.

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

<ЭлементФормы> (необязательный)
Тип: ГруппаФормы, ТаблицаФормы, ПолеФормы, КнопкаФормы, ДекорацияФормы.
Элемент формы, около которого будет открыт выпадающий список. Для некоторых элементов формы выпадающий список будет показан около активной области.
Если не указан, то будет выбран активный элемент формы.
Примечание: В качестве этого параметра нельзя указывать кнопки, расположенные в командной панели или подменю.

<НачальноеЗначение> (необязательный)
Тип: Число, ЭлементСпискаЗначений.
Задает начальный элемент, который будет активным при открытии списка.
Если параметр не указан, в списке не будет выбрано начальное значение.
Описание:

Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области.

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

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

Пример:

Список = Новый СписокЗначений;
Список.Добавить("Доставка");
Список.Добавить("Разгрузка");
Список.Добавить("Картинка",,,БиблиотекаКартинок.Картинка1);
Оп = Новый ОписаниеОповещения("ВыполнитьПослеВыбора", ЭтотОбъект, Параметр);
ПоказатьВыборИзСписка(Оп, Список, Элементы.Поле1);

См. также:
ФормаКлиентскогоПриложения, метод ВыбратьИзСписка
ФормаКлиентскогоПриложения, метод ВыбратьИзСпискаАсинх

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

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

Описание изменено в версии 8.3.22.

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

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

Получить выбор формы через экспортный обработчик завершения

ПоказатьВыборИзСписка возвращает управление сразу. Результат поступает в экспортную процедуру с двумя параметрами, а исходное количество передаётся дополнительной структурой.

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

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

Подготовка

  1. В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебнаяФорма85 с пустой управляемой основной формой. Используйте тонкий клиент Windows.

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

  3. Не создавайте вручную ЗначениеПримера, ПолеПримера и кнопку: код создаёт их полностью. Каждый урок запускайте в отдельной копии своей формы.

  4. Сохраните свою EPF и откройте её в учебной базе. Собственное количество начинается с 3, цена книги задана в коде как 250; исходный расчёт равен 750.

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

  6. Команда расчёта имеет ИзменяетСохраняемыеДанные = Ложь. Уроки изменяют только свой интерфейс и значения собственной формы, не конфигурацию и не рабочие данные.

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

Перем Занято;

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


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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если Занято = Истина Тогда
        Возврат;
    КонецЕсли;
    Занято = Истина;
    Элементы.КнопкаУчебноеДействие.Доступность = Ложь;
    Варианты = Новый СписокЗначений;
    Варианты.Добавить(3, "Три учебные книги — 750");
    Варианты.Добавить(5, "Пять учебных книг — 1250");
    КонтекстВыбора = Новый Структура("ДоВыбора", ЗначениеПримера);
    Оповещение = Новый ОписаниеОповещения("ПослеСобственногоВыбора", ЭтаФорма, КонтекстВыбора);
    Попытка
        ЭтаФорма.ПоказатьВыборИзСписка(Оповещение, Варианты, Элементы.ПолеПримера, Варианты.Получить(0));
    Исключение
        Занято = Ложь;
        Элементы.КнопкаУчебноеДействие.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ПослеСобственногоВыбора(Выбор, ДополнительныеПараметры) Экспорт
    Занято = Ложь;
    Элементы.КнопкаУчебноеДействие.Доступность = Истина;
    ДоВыбора = ДополнительныеПараметры.ДоВыбора;
    Если Выбор = Неопределено Тогда
        Сообщить("Выбор отменён: собственное количество не изменено");
        Возврат;
    КонецЕсли;
    Если ЗначениеПримера <> ДоВыбора Тогда
        Сообщить("Количество изменилось за время выбора. Повторите выбор для актуального значения");
        Возврат;
    КонецЕсли;
    Количество = Выбор.Значение;
    Если ТипЗнч(Количество) <> Тип("Число") Тогда
        ВызватьИсключение "Выбор должен содержать число, а не видимую подпись";
    КонецЕсли;
    Если Количество <> 3 И Количество <> 5 Тогда
        ВызватьИсключение "Неожиданное значение учебного списка";
    КонецЕсли;
    ЗначениеПримера = Количество;
    Если ТипЗнч(ЗначениеПримера) <> Тип("Число") Тогда
        ВызватьИсключение "Собственное количество должно быть числом";
    КонецЕсли;
    Если ЗначениеПримера < 1 ИЛИ ЗначениеПримера > 10 ИЛИ ЗначениеПримера <> Цел(ЗначениеПримера) Тогда
        ВызватьИсключение "Для учебного расчёта выберите целое количество от 1 до 10";
    КонецЕсли;
    Цена = 250;
    Сумма = ЗначениеПримера * Цена;
    Сообщить(Сумма >= 250 И Сумма <= 2500);
    Сообщить(Сумма / Цена = ЗначениеПримера);
    Сообщить(СтрШаблон("Собственные книги: %1 × %2 = %3", ЗначениеПримера, Цена, Сумма));

КонецПроцедуры

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

  1. Готовим собственный список, начальный элемент и структуру ДоВыбора. Снимок хранит число, не ссылку на рабочий документ.

  2. ОписаниеОповещения связывает имя экспортной процедуры, собственную форму и дополнительные параметры.

  3. ПоказатьВыборИзСписка вызываем без присваивания результата: его результат не является выбранным элементом.

  4. Экспортная процедура получает Выбор и ДополнительныеПараметры. Сначала восстанавливает кнопку, затем проверяет отмену и актуальность исходного количества.

  5. Только допустимые 3/5 применяются к собственному реквизиту. Сам расчёт выполняется в обработчике завершения, не сразу после показа списка.

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

  1. При выборе 5 обработчик показывает 1250 и две Истина. Отмена оставляет количество прежним и разблокирует кнопку.

  2. В отладчике проверьте два параметра экспортного обработчика: элемент или Неопределено и структура с ДоВыбора.

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

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

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

  1. Без Экспорт обработчик не соответствует контракту ОписаниеОповещения для обратного вызова.

  2. Выбранный элемент не приходит обычным возвращаемым значением метода ПоказатьВыборИзСписка.

  3. Если форма закрывается, не рассчитывайте на результат выбора как на подтверждённую запись: этот урок вообще ничего не записывает.

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

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

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

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

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