1С выбор значения из списка

Использование отбора:
Функционал, который используется для интерактивного отбора в списках, можно использовать и для отбора программным способом.
Для этого нужно для события НачалоВыбора соответствующего поля ввода определить процедуру обработки и внутри процедуры программно устанавить отбор для списка.
Далее следует пример процедуры обработки события НачалоВыбора для поля ввода СтатьяПДР. Реквизит (и поле ввода, соответственно) СтатьяПДР имеет тип СправочникСсылка.ПрочиеДоходыИРасходы. Для списка справочника «Прочие доходы и расходы» устанавливается отбор по реквизиту «Вид прочих доходов и расходов» со значением «Прочие внереализационные доходы (расходы)».
Код 1C v 8.х Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка)
ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент);
ЭлементОтбораВидПДР = ФормаВыбора.Отбор.ВидПрочихДоходовИРасходов;
Если ЭлементОтбораВидПДР <> Неопределено Тогда
ЭлементОтбораВидПДР.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбораВидПДР.Значение = Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы;
ЭлементОтбораВидПДР.Использование = Истина;
КонецЕсли;
ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ВидПрочихДоходовИРасходов.Доступность = Ложь;
ФормаВыбора.Открыть();
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Обратите внимание на строку кода:
Код 1C v 8.х ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ВидПрочихДоходовИРасходов.Доступность = Ложь;
Она закрывает доступ к настройке отбора «Вид прочих доходов и расходов». Таким образом, пользователь не может отключить заданный программно отбор и имеет возможность сделать выбор значения только из ограниченного списка.
Внутри процедуры обработки события НачалоВыбора параметру СтандартнаяОбработка нужно обязательно присвоить значение Ложь. В противном случае будет открыт и ограниченный список, и стандартный список, а это, конечно, не входит в наши планы.
В следующем примере для поля ввода СчетДт типа ПланСчетовСсылка.Хозрасчетный устанавливается отбор в виде списка счетов. Список счетов предварительно формируется с помощью запроса.
Код 1C v 8.х Процедура СчетДтНачалоВыбора(Элемент, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| Хозрасчетный.Ссылка
|ИЗ
| ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Родитель В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))
| И Хозрасчетный.ЗапретитьИспользоватьВПроводках = ЛОЖЬ»;
СписокСчетов = Новый СписокЗначений;
СписокСчетов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(«Ссылка»));
ФормаВыбора = ПланыСчетов.Хозрасчетный.ПолучитьФормуВыбора(, Элемент);
ЭлементОтбораСсылка = ФормаВыбора.Отбор.Ссылка;
Если ЭлементОтбораСсылка <> Неопределено Тогда
ЭлементОтбораСсылка.ВидСравнения = ВидСравнения.ВСписке;
ЭлементОтбораСсылка.Значение = СписокСчетов;
ЭлементОтбораСсылка.Использование = Истина;
КонецЕсли;
ФормаВыбора.ЭлементыФормы.Список.НастройкаОтбора.Ссылка.Доступность = Ложь;
ФормаВыбора.Открыть();
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Использование выбора из списка:
Выбор значения Перечисления обычно осуществляется из маленького списка. Но даже если включить выбор из формы (это делается с помощью свойства «Быстрый выбор» поля ввода), функционал отбора для перечислений все равно неприменим.
В таком случае подходящий способ ограничения списка выбора — использование метода формы ВыбратьИзСписка. Аналогично первому способу, необходимо определить процедуру обработки события НачалоВыбора для поля ввода значения. В следующем примере для поля ввода ВидПДР типа ПеречислениеСсылка.ВидыПрочихДоходовИРасходов программно устанавливается ограниченный список выбора.
Код 1C v 8.х Процедура ВидПДРНачалоВыбора(Элемент, СтандартнаяОбработка)
ВидыПДР = Новый СписокЗначений;
ВидыПДР.Добавить(Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы);
ВидыПДР.Добавить(Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеОперационныеДоходыРасходы);
ВыбранныйЭлемент = ВыбратьИзСписка(ВидыПДР, Элемент, ВидыПДР.НайтиПоЗначению(Элемент.Значение));
Если ВыбранныйЭлемент <> Неопределено Тогда
Элемент.Значение = ВыбранныйЭлемент.Значение;
КонецЕсли;
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Результат работы процедуры показан на рисунке. Метод ВыбратьИзСписка открывает маленький список с набором значений, переданных в процедуру в первом параметре (в примере — список значений ВидыПДР).
Пример ограничения списка выбора для перечисления в 1С 8
Пример для других агрегатных типов:
Код 1C v 8.х Процедура СчетКтНачалоВыбора(Элемент, СтандартнаяОбработка)
СчетаКт = Новый СписокЗначений;
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоТекущимОперациям);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеДоходы);
ВыбранныйЭлемент = ВыбратьИзСписка(СчетаКт, Элемент, СчетаКт.НайтиПоЗначению(Элемент.Значение));
Если ВыбранныйЭлемент <> Неопределено Тогда
Элемент.Значение = ВыбранныйЭлемент.Значение;
КонецЕсли;
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Информация взята с сайта http://helpf.pro

Открывает выпадающий список для выбора значения

Синтаксис

Метод ВыбратьИзСписка() имеет следующий синтаксис:

ЭлементСпискаЗначений ВыбратьИзСписка(СписокЗначений, , )

А также альтернативный англоязычный синтаксис:

ValueListElement ChooseFromList(ValueList, , )

Параметры

Описание параметров метода ВыбратьИзСписка():

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

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

ЭлементФормы (необязательный) ГруппаФормы, ТаблицаФормы, ПолеФормы, КнопкаФормы Элемент формы, около которого будет открыт выпадающий список. Если не указан, то будет выбран активный элемент формы.
НачальноеЗначение (необязательный) Число, ЭлементСпискаЗначений Задает начальный элемент, который будет активным по-умолчанию при открытии списка.
Жирным шрифтом выделены обязательные параметры

Возвращаемое значение

ЭлементСпискаЗначений — если пользователь выбрал значение
Неопределено — если пользователь отказался от выбора

Описание

Метод ВыбратьИзСписка() Открывает выпадающий список для выбора значения из предложенного списка. Выпадающий список будет расположен около переданного элемента формы или около его активной области.

Внимание! В веб-клиенте выбор осуществляется из списка, открываемого в отдельном окне. Внимание!! Если для конфигурации отключен режим использования модальности (свойство РежимИспользованияМодальности установлено в НеИспользовать), следует использовать метод ПоказатьВыборИзСписка().

Доступность

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

Пример использования

Пример кода с использованием метода ВыбратьИзСписка():

&НаКлиенте Процедура СпособПолученияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СписокВыбора = Новый СписокЗначений; СписокВыбора.Добавить(«Самовывоз»); СписокВыбора.Добавить(«Доставка»); //в качестве элемента указываем элемент, вызвавший событие ВыбЭлемент = ЭтаФорма.ВыбратьИзСписка(СписокВыбора, Элемент, 0); Если НЕ ВыбЭлемент = Неопределено Тогда СпособПолучения = ВыбЭлемент.Значение; КонецЕсли; СтандартнаяОбработка = Ложь; КонецПроцедуры

В данной статье рассматривается технология реализации подбора на платформе 1С 8.2. Статья не претендует на академизм, просто столкнувшись с рядом проблем и не нашедшим «правильной» методологии решения (возможно плохо искал), решил пройти этот путь самостоятельно, естественно пользуясь различными источниками. В основном я опираюсь на материалы мастер-групп Базового курса «Профессиональное программирование в 1С» Евгения Гилева и Насипова Фарита, участником которого я являюсь, а также соответствующей литературы (М.Г. Радченко, Е.Ю. Хрусталева Практическое пособие разработчика).
Итак, предметная область: компания занимается оптовой торговлей товарами имеющими срок годности, который относится к серии, а та в свою очередь принадлежит конкретному товару. Товары поступают на разные склады. Задача: реализовать удобное заполнение табличной части расходного документа. Решение: необходимо реализовать форму подбора, обеспечивающею просмотр остатков товара по срокам годности, возможность выбора соответствующих позиций и последующий перенос в табличную часть документа. Задачи такого плана встречаются в 5 части сборника задач к подготовке экзамена по Специалисту.
Реализация. Создаем форму произвольного типа для документа Продажа товаров. Можно конечно создать общую форму, но в данной ситуации выбираем то, что поближе. На форме создаем реквизиты:
Склад — тип СправочникиСсылка.Склады
Товары — Динамический список, в свойствах ставим галочку произвольный запрос.
Выбор — таблица значений (колонки Товар, Серия — тип ссылки на соответствующие справочники, срок годности, количество — дата, число).
Настраиваем запрос для реквизита Товары. Здесь по идее все просто с помощью конструктора берем два справочника и виртуальную таблицу Остатков регистра Остатки товара. Если нужно видеть весь товар, то используем левое соединение Товаров с остальными источниками, если только с остатками, то полное соединение с регистром:

Код 1C v 8.2 УП ВЫБРАТЬ
Товары.Ссылка КАК Товар,
Серии.Ссылка КАК Серия,
Серии.СрокГодности,
ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК Количество
ИЗ
Справочник.Товары КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Серии КАК Серии
ПО (Серии.Владелец.Ссылка = Товары.Ссылка)
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(, Склад = &Склад) КАК ТоварыНаСкладеОстатки
ПО (ТоварыНаСкладеОстатки.Товар = Товары.Ссылка)

УПОРЯДОЧИТЬ ПО
Товар,
СрокГодности
Для виртуальной таблицы в параметрах указываем отбор по складу. После этого я 3 часа топтался на одном месте. Когда я запустил данную форму в процессе отладки, то я увидел только одну строчку с товаром, хотя их должно было быть больше. Честно говоря и растерялся, так как по идее все должно быть просто но … И вот около 3 часов я пытался понять почему не выводятся все записи. Конечно, может это и не является серьезной проблемой и большинство практикующих специалистов 1С про нее знают, но только после долгого серфинга по Интернету я нашел, что надо очистить свойство основная таблица в окне настройки запроса динамического списка, и тогда появились все записи. При этом становится неактивным свойство динамическое считывание данных. В книге «Разработка управляемого интерфейса» мне не удалось найти назначение параметра основная таблица и описание это ситуации. Сразу хочу отметить, что в типовой конфигурации управление небольшой фирмой используется не динамический список, а дерево значений.
И так, возвращаемся в нормальное русло решение задачи.
В разработанной форме я добавил параметр Склад с целью отбора остатков.
Для того чтобы открыть созданную форму подбора, в управляемой форме документы Продажа товара создаем команду подбор, размещаем на форме о генерируем обработчик, в котором нам необходимо открыть форму. Так как форма должна обеспечивать множественный выбор и отбор по складу, то создаем структуру параметров формы. И открываем форму соответствующей командой.
Код 1C v 8.2 УП
&НаКлиенте
Процедура Подбор(Команда)
ПараметрыПодбора = Новый Структура(«ЗакрыватьПриВыборе, МножественныйВыбор, Склад», Ложь, Истина, Объект.Склад);
ОткрытьФорму(«Документ.ПродажаТоваров.Форма.ФормаПодбора», ПараметрыПодбора, Элементы.Товары);
КонецПроцедуры
Соответственно в форме подбора при создании заполняем параметр запроса склад из параметров формы:
Код 1C v 8.2 УП &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Товары.Параметры.УстановитьЗначениеПараметра(«Склад»,Параметры.Склад);
Склад = Параметры.Склад;
КонецПроцедуры
Теперь необходимо реализовать функционал формы подбора. При выборе соответствующей строки она должна переносится в таблицу значений, так же должен работать механизм перетаскивания. Для решения первой задачи необходимо создать обработчик события Выбор нашего динамического списка.
Код 1C v 8.2 УП &НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Для каждого НомерСтроки Из ВыбраннаяСтрока Цикл
ТекСтрока = Элемент.ДанныеСтроки(НомерСтроки);
Поиск = Новый Структура(«Товар, Серия»,ТекСтрока.Товар,ТекСтрока.Серия);
МассивСтрок = ВыбранныеТовары.НайтиСтроки(Поиск);
Если МассивСтрок.Количество() = 0 Тогда
Строка = ВыбранныеТовары.Добавить();
Строка.Товар = ТекСтрока.Товар;
Строка.Серия = ТекСтрока.Серия;
Строка.СрокГодности = ТекСтрока.СрокГодности;
Строка.Количество = 1;
ВвестиЧисло(Строка.Количество, «Введите количество»);
Пока Строка.Количество > ТекСтрока.Количество Цикл
ВвестиЧисло(Строка.Количество, «Введите верное количество!»);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В нем имеется параметр ВыбраннаяСтрока представляющий собой массив, элементами которого являются номера строк списка Товары. В цикле проверяем не дублируются ли выбранные строки и запрашивается количество.
Для реализации перетаскивания необходимо проверить настройку следующих параметров: Для таблицы Товары — РазрешитьНачалоПеретаскивания, для Выбранные товары — РазрешитьПеретаскивание.
Так же необходимо создать обработчик события Перетаскивание для элемента формы ВыбранныеТовары.
Код 1C v 8.2 УП &НаКлиенте
Процедура ВыбранныеТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Для каждого НомерСтроки Из ПараметрыПеретаскивания.Значение Цикл
ТекСтрока = Элементы.Товары.ДанныеСтроки(НомерСтроки);
Поиск = Новый Структура(«Товар, Серия»,ТекСтрока.Товар,ТекСтрока.Серия);
МассивСтрок = ВыбранныеТовары.НайтиСтроки(Поиск);
Если МассивСтрок.Количество() = 0 Тогда
Строка = ВыбранныеТовары.Добавить();
Строка.Товар = ТекСтрока.Товар;
Строка.Серия = ТекСтрока.Серия;
Строка.СрокГодности = ТекСтрока.СрокГодности;
Строка.Количество = 1;
ВвестиЧисло(Строка.Количество, «Введите количество»);
Пока Строка.Количество > ТекСтрока.Количество Цикл
ВвестиЧисло(Строка.Количество, «Введите верное количество!»);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Так как код обработчика похож на предыдущий, то для оптимизации можно создать процедуры и вызывать ее из обоих обработчиков.
На рисунке приведен внешний вид формы подбора:

Для завершения подбора создана команда формы, с обработчиком, выполняющим оповещение о выборе:
Код 1C v 8.2 УП &НаКлиенте
Процедура Перенести(Команда)
ОповеститьОВыборе(ВыбранныеТовары);
Закрыть();
КонецПроцедуры
Соответственно, в форме документа реализован обработчик события ОбработкаВыбора:
Код 1C v 8.2 УП &НаКлиенте
Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ВыбранноеЗначение.Количество() > 0 И Объект.Товары.Количество() > 0 Тогда
Режим = РежимДиалогаВопрос.ДаНет;
Текст = «Очистить табличную часть?»;
Ответ = Вопрос(Текст, Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.Товары.Очистить();
КонецЕсли;
КонецЕсли;
Для каждого Подбор Из ВыбранноеЗначение Цикл
Строка = Объект.Товары.Добавить();
Строка.Товар = Подбор.Товар;
Строка.Серия = Подбор.Серия;
Строка.Количество = Подбор.Количество;
КонецЦикла;
КонецПроцедуры
Кроме того, есть еще несколько тюнинговых настороек, про которые писать особого смысла нет, но для формы подбора желательно не забыть настроить свойство РежимОткрытияОкна — Блокировать окно владельца, чтобы пользователь не смого ее случайно вернутся в документ не закрыв окно подбора, при этом доступ к основному окну будет.
В целом хочется еще раз подчеркнуть, что целью данной статьи не является проповедование истины, а просто поделится полученной информацией. Буду благодарен за конструктивные советы и рекомендации, так как тема управляемых форм достаточно новая, но похоже надолго, и ряд вопросов (особенности работы с произвольными запросами) требует дополнительной информации.

Для того чтобы открыть форму выбора с отбором в 1с 8.2 (обычные формы), нам нужно выполнить некоторые действия. Сначала мы ее получим. После этого выставим отбор и программно откроем, вот пример кода:

Отбор на форме в поле ввода 1С 8.2 с несколькими значениями

В примере выше мы рассмотрели как устанавливать отбор на форме выбора по конкретному значению. Теперь давайте рассмотрим ситуацию когда нужно подставить несколько значений, это может быть например как массив, так и выгрузка из результата запроса. Это отбор в поле ввода 1с с несколькими значениями.

Для начала получаем форму выбора, в параметрах передаем «Элемент» (владельца), устанавливаем флаг режима выбора. Потом создаем список значений и массив, отмечаем что в качестве отбора когда устанавливается вид сравнения в списке, может присутствовать объект только с типом СписокЗначений . Добавляем элементы в массив, затем этот массив загружаем в СписокЗначений который в следствии мы устанавливаем в отборе. Также не забываем включить флаг использования данного отбора, и установить ВидСравнения.

Установка отбора в поле ввода на форме в 1С 8.3, событие НачалоВыбора

Теперь рассмотрим отбор в поле ввода на управляемой форме в 1С 8.3 . Найдем на форме интересующий нас элемент, в котором мы будем устанавливать отбор, в нашем случае это поле «Организация». Находим событие «НачалоВыбора», щелкаем на лупу и оказываемся в процедуре. Мы видим параметр ДанныеВыбора, этот параметр имеет тип СписокЗначений. Для того чтобы ограничить выбор необходимыми элементами, нам необходимо заполнить СписокЗначений. Элементы выбрать можем только на сервере, поэтому создаем процедуру с директивой компиляции &НаСервере. В данной процедуре заполняем ДанныеВыбора.

Полный синтаксис (нажмите, чтобы раскрыть)

СписокЗначений

Описание:

Список значений — это не сохраняемый в базе данных объект, который позволяет строить для решения интерфейсных задач динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.

Элементы коллекции: ЭлементСпискаЗначений

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл . При обходе выбираются элементы коллекции.

Возможно обращение к элементу коллекции посредством оператора . В качестве аргумента передается индекс элемента (нумерация с 0 ).

Свойства:

Методы:

Вставить (Индекс, Значение, Представление, Пометка, Картинка)Вставляет новый элемент в список значений на позицию с указанным индексом.
ВыбратьЭлемент (Заголовок, Элемент)Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений. Элемент — элемент, на который следует изначально спозиционировать список значений при интерактивном выборе. Если значением параметра не является элемент списка значений, входящий в данный список, позиционирования не произойдет.
ВыгрузитьЗначения ()Создает массив и копирует в него значения элементов списка значений.
Добавить (Значение, Представление, Пометка, Картинка)Добавляет новый элемент в конец списка значений.
ЗагрузитьЗначения (МассивЗначений)Загружает список значений значениями из переданного массива. При этом все прежние элементы списка удаляются.
ЗаполнитьПометки (Пометка)Устанавливает пометку у всех элементов списка значений.
Индекс (Элемент)Получает индекс элемента в списке значений. Если не найдено, то возвращается -1.
Количество ()Получает количество элементов списка значений.
НайтиПоЗначению (ИскомоеЗначение)Осуществляет поиск значения элемента списка значений. Если ни один элемент не хранит значения, равного искомому, то возвращается значение Неопределено .
НайтиПоИдентификатору (Идентификатор)Получает элемент списка значений по идентификатору. Если элемент не найден, то возвращается Неопределено .
ОтметитьЭлементы (Заголовок)Устанавливает или снимает (интерактивно) пометки у элементов списка значений. Возвращает Истина , если в диалоге нажата кнопка «ОК», Ложь — в противном случае.
Очистить ()Очищает список значений, удаляя из него все элементы.
ПоказатьВыборЭлемента (ОписаниеОповещенияОЗакрытии, Заголовок, Элемент)Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений.
ПоказатьОтметкуЭлементов (ОписаниеОповещенияОЗакрытии, Заголовок)Предназначен для интерактивной установки состояний пометок у элементов списка значений.
Получить (Индекс)Получает значение по индексу. Работает аналогично оператору .
Сдвинуть (Элемент, Смещение)Сдвигает элемент списка значений на заданное количество позиций вперед или назад.
Скопировать ()Создает копию списка значений.
СортироватьПоЗначению (Направление)Сортирует список значений в порядке возрастания или убывания хранимых элементами значений. См. пример ниже.
СортироватьПоПредставлению (Направление)Сортирует список значений по возрастанию или по убыванию в алфавитном порядке представлений входящих в состав списка значений элементов. См. пример ниже.
Удалить (Элемент)Удаляет элемент из списка значений, где Элемент — индекс удаляемого элемента, либо сам элемент.

Конструкторы:

Новый СписокЗначений

Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.

Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.

Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()

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

Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)

  • Включим кнопку выбора списка
  • В свойстве «Список выбора» нажмите «…» и введите варианты
  • Результат выбора будет сохранен в выбранном реквизите

Выпадающий список значений 1С на форме — Вариант 2)

  • Включим кнопку выбора списка
  • Добавим обработчик «НачалоВыбораИзСписка»

&НаКлиенте
Процедура ВыбранноеЗначениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)

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

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

Выпадающий список значений 1С на форме — Вариант 3)

Данный вариант работает аналогично, но интерфейсно выглядит по другому.