Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области.
Синтаксис
ВыбратьИзСписка(<СписокЗначений>, <ЭлементФормы>, <НачальноеЗначение>)Примеры платформы
Список = Новый СписокЗначений;
Список.Добавить("Доставка");
Список.Добавить("Разгрузка");
Список.Добавить("Картинка",,,БиблиотекаКартинок.Картинка1);
Вид = ВыбратьИзСписка(Список, Элемент);Полное описание, параметры и ограничения
Форма.ВыбратьИзСписка (Form.ChooseFromList)
Форма (Form)
ВыбратьИзСписка (ChooseFromList)
Доступен, начиная с версии 8.0.
Синтаксис:
ВыбратьИзСписка(<СписокЗначений>, <ЭлементФормы>, <НачальноеЗначение>)
Параметры:
<СписокЗначений> (обязательный)
Тип: СписокЗначений.
Список значений, содержащий значения, из которых будет осуществляться выбор.
<ЭлементФормы> (необязательный)
Элемент управления формы, около которого будет открыт выпадающий список. Для некоторых элементов (табличный документ, табличное поле) выпадающий список будет показан около активной области. Если не указан, то будет выбран активный элемент формы.
Примечание: В качестве этого параметра нельзя указывать кнопки, расположенные в командной панели или подменю.
<НачальноеЗначение> (необязательный)
Тип: Число, ЭлементСпискаЗначений.
Задает начальный элемент, который будет активным при открытии списка. Если параметр не указан, в списке не будет выбрано начальное значение.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений.
Выбранный элемент списка или Неопределено, если пользователь отказался от выбора.
Описание:
Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области.
Доступность:
Толстый клиент.
Примечание:
Если в списке значений указаны картинки, то они отображаются в выпадающем списке.
Пример:
Список = Новый СписокЗначений;
Список.Добавить("Доставка");
Список.Добавить("Разгрузка");
Список.Добавить("Картинка",,,БиблиотекаКартинок.Картинка1);
Вид = ВыбратьИзСписка(Список, Элемент);
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Выбрать книгу или ручку: обычная форма
Два кода A-01/B-02 отделены от представлений Книга/Ручка. Меню и список возвращают элемент списка, а отмена сохраняет прежний выбор. В списке начальный элемент — собственная Ручка, не произвольный номер строки.
Где и как запускать
Полный модуль своей обычной формы. Только перечисленные клиентские режимы; не запускался.
Подготовка
Создайте НОВУЮ пустую учебную конфигурацию УчебныеФормы85 на платформе 8.5.1.1343. Бизнес-объектов, расширений, подписок и регламентных заданий нет. Для уроков подбора добавьте только собственную обработку УчебныйПодбор85 и две обычные формы Пульт/Подбор. Другие уроки используют отдельные новые внешние обработки. Рабочие УТ, КА, УНФ и БП не изменяйте. Здесь никакие формы или базы не создавались и код не запускался: runtimeVerifiedScenarios=0.
Создайте общий модуль УчебныеФормы85: Клиент (обычное приложение)=Да, Сервер=Да, Глобальный=Нет, Вызов сервера=Нет. Вставьте целиком отдельный модуль проверки стенда ниже. Обычная форма вызывает его в толстом клиенте; управляемая — только из серверного события создания.
Создайте новую внешнюю обработку с обычной формой. Добавьте реквизиты ВыбранныйКод (Строка,10) и Название (Строка,40), поле ввода ПолеКода с привязкой к ВыбранныйКод и отдельное поле Название. Именно ПолеКода будет якорем раскрываемого списка.
Создайте обычные кнопки Меню и Список, свяжите одноимённые обработчики. Событие ПриОткрытии свяжите с одноимённой процедурой; запускайте толстым клиентом с обычными формами.
Это обычная форма толстого клиента. Код нельзя вставить в управляемую форму: у неё другие элементы и директивы.
Вставьте целиком основной код в модуль формы и проверьте F7. Данные заданы в памяти; справочник Номенклатура, сервер обмена, картинки и файлы не нужны.
Процедура ПриОткрытии()
УчебныеФормы85.ПроверитьСвойПустойСтенд();
ВыбранныйКод = "";
Название = "";
КонецПроцедуры
Процедура Меню(Кнопка)
Список = СоздатьСвойСписок();
Элемент = ЭтаФорма.ВыбратьИзМеню(Список, ЭлементыФормы.ПолеКода);
ПринятьЭлемент(Элемент);
КонецПроцедуры
Процедура Список(Кнопка)
Значения = СоздатьСвойСписок();
Начальный = Значения.НайтиПоЗначению("B-02");
Элемент = ЭтаФорма.ВыбратьИзСписка(Значения, ЭлементыФормы.ПолеКода, Начальный);
ПринятьЭлемент(Элемент);
КонецПроцедуры
Функция СоздатьСвойСписок()
Список = Новый СписокЗначений;
Список.Добавить("A-01", "Книга");
Список.Добавить("B-02", "Ручка");
Возврат Список;
КонецФункции
Процедура ПринятьЭлемент(Элемент)
Если Элемент = Неопределено Тогда
Сообщить("Выбор отменён; прежний код сохранён");
Возврат;
КонецЕсли;
Если ТипЗнч(Элемент) <> Тип("ЭлементСпискаЗначений") Или ТипЗнч(Элемент.Значение) <> Тип("Строка") Тогда
ВызватьИсключение "Нужен элемент собственного списка с кодом-строкой";
КонецЕсли;
Список = СоздатьСвойСписок();
Проверенный = Список.НайтиПоЗначению(Элемент.Значение);
Если Проверенный = Неопределено Или Элемент.Представление <> Проверенный.Представление Тогда
ВызватьИсключение "Выбрано значение не из собственного списка";
КонецЕсли;
ВыбранныйКод = Элемент.Значение;
Название = Элемент.Представление;
Сообщить(ВыбранныйКод + " — " + Название);
КонецПроцедурыУчебныеФормы85.ПроверкаСтенда
Своя пустая конфигурация УчебныеФормы85 → Общие → Общие модули → УчебныеФормы85
Полный общий модуль: обычный клиент и сервер, без глобального доступа и вызова сервера. Не выполнялся.
Процедура ПроверитьСвойПустойСтенд() Экспорт
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыРазбор по шагам
СоздатьСвойСписок добавляет две настоящие пары значение/представление: A-01/Книга и B-02/Ручка. Значение не совпадает с подписью, поэтому в реквизит записывается именно код.
Меню вызывает метод этой подготовленной формы около собственного поля ввода. Кнопка командной панели не передаётся как якорь: нативная справка это запрещает.
Список передаёт Начальный — элемент, полученный из того же списка через НайтиПоЗначению("B-02"). Это не строка B-02 вместо элемента и не индекс из чужой таблицы.
ПринятьЭлемент сначала обрабатывает Неопределено. При отмене реквизиты остаются прежними. При выборе проверяет тип, код и соответствие представления собственной паре, затем заполняет ВыбранныйКод/Название.
Синхронный вызов возвращает выбранный элемент прямо в текущий обработчик. Обычный интерфейс не равен управляемому.
Как проверить результат
В будущем ручном запуске выберите Книгу: A-01/Книга. Затем Ручку: B-02/Ручка. Не ожидайте, что метод вернёт голую строку вместо ЭлементСпискаЗначений.
После выбора откройте меню и отмените его: оба прежних реквизита должны сохраниться. При открытии списка должна быть выбрана Ручка; наличие начального элемента не отменяет право пользователя выбрать Книгу или отменить выбор.
Повторите выбор в обычном толстом клиенте; список не записывает данные в базу. Здесь интерфейс не запускался.
Ожидаемый результат
Подготовлен полный модуль формы с выбором, начальным элементом и сохранением состояния при отмене; запуск в 1С не проверен.
На что обратить внимание
Синхронные методы управляемой формы не являются вариантом для веб-клиента или режима НеИспользовать.
ЭлементСпискаЗначений, его Значение и его Представление — разные сущности. Начальный элемент должен принадлежать переданному списку.
Подпись не используется как ключ. Этот учебный список содержит только две собственные строковые пары, а не произвольные внешние объекты.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.