рубрики: Работа с формами | Дата: 22 января, 2016
Скачать обработку с примерами из статьи: professia1c_ListValue.epf
Платформа: 8.3; Тип формы: управляемая.
Рассмотрим как разместить выпадающий список значений на форме. Практиковаться будем на платформе 1С:Предприятие 8.3 на управляемых формах. Предположим, что нам надо разместить на форме список значений как показано на рисунке.
Итак, создаем внешнюю обработку. Создаем для формы реквизит в котором будет содержаться выбранное из списка значение.
Назовем его к примеру – СписокВариантов. Выберем для него тип значения. В нашем случае это будет строка, хотя в зависимости от задачи это может быть и СправочникСсылка, ПеречислениеСсылка и т.д. Хочется только подчеркнуть, что тип не список значений, что на первый взгляд кажется логичным, а именно тот тип, значения которого будут в этом списке отображаться. Далее размещаем наш реквизит на форме как поле ввода.
А для работы со списком значений будем использовать свойство поля ввода – СписокВыбора.
Для этого в свойствах поля ввода включаем флажок РежимВыбораИзСписка
И программно заполняем СписокВыбора нужными нам значениями:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список = Новый СписокЗначений;
Список.Добавить("Вариант 1");
Список.Добавить("Вариант 2");
Список.Добавить("Вариант 3");
Элементы.СписокВариантов.СписокВыбора.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
СписокВариантов = Элементы.СписокВариантов.СписокВыбора[0].Значение;
КонецПроцедуры
Для обычной (не управляемой формы) принцип реализации точно такой же.
Все бы ничего, но если СписокВариантов Строка … то выражение
СписокВариантов = Элементы.СписокВариантов.СписокВыбора[0].Значение;
не работает при ПриСозданииНаСервере
При открытии формы это значение обнуляется
На других типах (Спр. Документ …) не проверял
И … было бы неплохо писать для какой версии 1С Вы пишете описание. Может быть, для какой-то версии это и работает
Дома делал вот на этой версии 1С:Предприятие 8.3, учебная версия (8.3.6.2014). Работает. Правда режим файловый, код то все равно на клиенте выполняется. Но на работе тоже такое делал на 8.2. Там серверный вариант. Проверю, отпишусь.
Можно и в ПриОткрытии() этот код затолкать.
8.2.19.130. Работает. В серверном варианте.
Спасибо
Пожалуйста! Заходите еще
Как сделать что бы отображалось не значение а представление?
Период — Реквизит обработки, тип ДАТА.
И на форме поле Период
Пока Выборка.Следующий() Цикл
Список = Новый СписокЗначений;
Список.Добавить(НачалоМесяца(Выборка.Дата), ПредставлениеПериода(НачалоМесяца(Выборка.Дата),КонецМесяца(Выборка.Дата)));
КонецЦикла;
Элементы.Период.СписокВыбора.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
Объект.Период = Элементы.Период.СписокВыбора[0].Значение;
Добавить(, , , )
Попробуй заполнить второй параметр