Выпадающий список 1с обычные формы
« Как стать программистом 1С » Язык 1С » Выпадающий список значений 1С на форме
Выпадающий список значений 1С на форме
Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.
Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.
Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()
ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, «Создать документ»);
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, «Изменить документ»);
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(2, «Удалить документ»);
ЭлементыФормы.ВыборЗначения.Значение = 0;
Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)
Выпадающий список значений 1С на форме — Вариант 2)
&НаКлиенте
Процедура ВыбранноеЗначениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить(«Добавить документ»);
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить(«Редактировать документ»);
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить(«Удалить документ»);
Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.
Выпадающий список значений 1С на форме — Вариант 3)
Данный вариант работает аналогично, но интерфейсно выглядит по другому.
1с список выбора установить значение
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Город.РежимВыбораИзСписка = Истина;
Элементы.Город.СписокВыбора.Добавить(«Москва»);
Элементы.Город.СписокВыбора.Добавить(«Монино»);
Элементы.Город.СписокВыбора.Добавить(«Щелково»);
Список выбора в поле Город будет выглядеть следующим образом:
Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.
Существует несколько способов выбора значения из программно сформированного списка значений. Такое обилие вариантов обусловлено различными требованиями к интерфейсу системы.
Давайте рассмотрим основные варианты. Предположим, что у нас есть список значений из которого пользователю нужно выбрать какое-то одно:
А. Выбор непосредственно из списка значений
Самый простой способ выбрать значение — инициировать его выбор через метод СписокЗначений.ВыбратьЭлемент():
Выглядеть это будет так:
Б. Выбор из выпадающего списка
При использовании этого способа список выбора будет показан не в независимом окне, а с привязкой к элементу формы. Для реализации этого способа воспользуемся стандартным методом формы ВыбратьИзСписка():
Выглядеть это будет так:
В. Выбор из выпадающего меню
Этот способ похож на предыдущий, но список выбора будет показан в виде выпадающего подменю. Этот способ уместнее использовать с элементами формы типа Кнопка. Для реализации этого способа воспользуемся методом формы ВыбратьИзМеню():
« Как стать программистом 1С » Язык 1С » Выпадающий список значений 1С на форме
Выпадающий список значений 1С на форме
Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.
Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.
Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()
ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, «Создать документ»);
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, «Изменить документ»);
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(2, «Удалить документ»);
ЭлементыФормы.ВыборЗначения.Значение = 0;
Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)
Выпадающий список значений 1С на форме — Вариант 2)
&НаКлиенте
Процедура ВыбранноеЗначениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить(«Добавить документ»);
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить(«Редактировать документ»);
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить(«Удалить документ»);
Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.
Выпадающий список значений 1С на форме — Вариант 3)
Данный вариант работает аналогично, но интерфейсно выглядит по другому.
Работа с полем выбора
Элемент управления «Поле выбора» предназначен для хранения и быстрого выбора одного из значений, входящих в его список выбора. Список выбора для поля выбора есть список значений. Значением поля выбора является одно единственное значение, а не весь список выбора.
Установка значения в поле выбора
В Поле выбора можно установить любое значение. В процессе установки значения будет выполнен его поиск среди значений, входящих в список выбора. Если устанавливаемое значение найдено в списке выбора, оно будет сохранено в поле выбора, иначе в поле выбора будет установлено значение «Неопределено». Исключение составляет значение «Неопределено», которое можно установить в поле выбора в любом случае, независимо от того, какие значения при этом хранятся в списке выбора.
Например, если список выбора имеет значениями числа 1, 2 и 3, тогда в поле выбора удастся установить любое из этих значений. При установке других значений, хотя ошибки времени выполнения и не произойдет, они сохранены не будут.
Представление значения, хранящегося в поле выбора
В качестве представления значения, хранящегося в поле выбора, используется представление элемента списка выбора, значение которого эквивалентного значению поля выбора. Если у элемента списка выбора представление не указано, оно формируется в виде текстового представления самого значения. В ситуациях, когда в списке выбора есть несколько одинаковых значений с разными представлениями, будет использоваться первое найденное из этих значений. Представление значения при этом будет сформировано на его основе, как описывалось выше.
Поиск значения в поле выбора по введенному тексту
Поиск значений по тексту осуществляется на основе представлений для элементов списка выбора. Для тех из элементов, в которых представление значения не указано, используется представление самого значения, хранящегося в нем.
Связь поля выбора с данными
Поле выбора можно связывать по данным с выбираемым значением, а не со списком значений. Например, если мы хотим, чтобы в поле выбора можно было выбирать число, и оно было связано по данным со значением некоторого реквизита, типом данных для реквизита должно быть число, а не список значений.
Особенности инициализации и использования списка выбора
Для правильного отображения в поле выбора данных, с которыми он связан, список выбора должен формироваться в теле модуля формы. Формировать список выбора для поля выбора в обработчике любого из событий формы – поздно. Это приведет к тому, что в поле выбора будет установлено значение «Неопределено», хотя в реквизите при этом может быть любое значение.
Такая ситуация возникает из-за того, что данные устанавливаются в элементы управления формы, связанные с ними, в процессе создания формы. А обработчики событий ПередОткрытием(), ПриОткрытии() вызываются после создания самой формы, в процессе инициализации ее визуальной части. Получается, что при создании формы полю выбора поставили некоторое значение в момент, когда его список выбора пустой. При этом, поскольку список выбора пустой, вместо устанавливаемого значения в поле выбора будет сохранено значение «Неопределено».
При смене типа значения (свойство «ТипЗначения») для списка выбора, у которого есть элементы, будет выполнено преобразование их значений к новому типу. Может быть следующая ситуация: после смены типа значения для списка выбора некоторое значение, которое раньше удавалось успешно установить в поле выбора, после смены типа значения установить не получается. Причина такой ситуации в том, что в процессе установки типа значения для списка выбора, успешно устанавливаемое ранее значение было конвертировано в другое значение (в соответствии с новым типом значения). Соответственно, устанавливаемое значение в списке выбора больше найдено не будет.
Использование поля выбора: пример 1
Пусть есть форма, в которой размещены поле выбора (ПолеВыбора1), поле ввода (ПолеВвода1) и создан реквизит (Реквизит1: число, длина = 10, точность = 0). В качестве данных для редактирования в ПолеВвода1 и ПолеВыбора1 стоит реквизит Реквизит1. В теле модуля формы написан следующий код:
Открыв такую форму в режиме 1С:Предприятие, можно видеть, как будут устанавливаться значения в поле выбора:
2. Выбираем в поле выбора в выпадающем списке строку с надписью «Один»: в поле ввода помещается значение 1. Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот. В данном случае в поле выбора выбрали строку «Один», значение для которой равно 1. Оно и отобразилось в поле ввода.
3. Выбираем в поле выбора в выпадающем списке строку с надписью «Два»: в поле ввода помещается значение 2.
Перейдем в поле ввода и попробуем редактировать значения в нем:
1. Введем в поле ввода значение 3 и сойдем с поля ввода. В поле выбора запишется значение 3 и установится значение из соответствующей строки списка выбора поля выбора («Три»).
2. Вернемся в поле ввода и введем в нем значение 4. Перейдем с поля ввода к следующему элементу управления. В поле ввода будет сохранено введенное значение «4», а поле выбора станет пустым. В данном случае введенное в поле ввода значение 4 будет сохранено в связанных с полем ввода данных, после чего выставлено из них в поле выбора. Поскольку поле выбора в списке выбора значения 4 не имеет, оно установлено в поле выбора не будет.
Использование поля выбора: пример 2
Пусть есть форма, в которой размещены поле выбора (ПолеВыбора1), поле ввода (ПолеВвода1) и создан реквизит (Реквизит1: СправочникСсылка.Номенклатура). В качестве данных для редактирования в ПолеВвода1 и ПолеВыбора1 стоит реквизит Реквизит1. В теле модуля формы написан следующий код:
Открыв такую форму в режиме 1С:Предприятие, можно видеть, как будут устанавливаться значения в поле выбора:
2. Выбираем в поле выбора в выпадающем списке строку с надписью «Один»: в поле ввода помещается значение. Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот. В данном случае в поле выбора выбрали строку «Один», значение для которой равно ссылке на на элемент справочника Справочники.Номенклатура.Элемент1. Оно и отобразилось в поле ввода.
3. Выбираем в поле выбора в выпадающем списке строку с надписью «Два»: в поле ввода помещается ссылка на элемент справочника Справочники.Номенклатура.Элемент2:
Перейдем в поле ввода и попробуем редактировать значения в нем:
1. Выберем в поле ввода значение Справочники.Номенклатура.Элемент1. В поле выбора запишется значение Справочники.Номенклатура.Элемент1 и установится значение из соответствующей строки списка выбора поля выбора («Один»).
2. Выберем в поле ввода значение Справочники.Номенклатура.Элемент2. В поле выбора запишется значение Справочники.Номенклатура.Элемент2 и установится значение из соответствующей строки списка выбора поля выбора («Два»).
3. Выберем в поле ввода значение Справочники.Номенклатура.Элемент3. В поле выбора значение Справочники.Номенклатура.Элемент3 записано не будет, поскольку оно не было добавлено в список выбора. Значением в поле ввода будет «Неопределено»:
Использование поля выбора: пример 3
Пусть есть внешняя обработка, в которой создан реквизит Реквизит1 типа СправочникСсылка.Номенклатура. Во внешней обработке есть две формы: в первой устанавливается значение реквизита и по нажатию на кнопку открывается вторая форма.
Посмотрим, как будет выглядеть вторая форма в зависимости от того, какое значение сохранено предварительно в реквизите внешней обработки Реквизит1.
Значение реквизита в списке выбора для поля выбора отсутствует:
Реализация выбора месяца из выпадающего списка выбора на форме
. и привяжите его к вашему реквизиту.
Сам список мы будем заполнять при открытии формы, а вот реализацю смены года будем делать в момент обработки выбора.
Итак, событие мы привязали к процедуре в модуле формы. Сам список формируется следующей процедурой:
Формирование списка мы будем вызывать из процедуры «При открытии», чтобы список сразу был заполнен, и текущий месяц был уже выбран..
И так-же будем формировать список заного каждый раз, когда переходим на другой год в момент выбора
Ну в общем-то и всё Надеюсь не сильно утомил.. Может, кому-нибудь, да помогу ^_______^
Специальные предложения
Нужно было заглянуть в типовые конфигурации(ЗУП,УПП1.3), поискать реквизит «ПериодРегистрации».
В ЗУПе 2.5 раздел «процедуры и функции для обеспечения ввода даты как месяца» модуля «работа с диалогами». На других конфигурацих скорее всего примерно также, как написали выше ищите ПериодРегистрации)
Тут реализовано изменение стрелочками, а не списком, да и вручную можно ввести. Как по мне весьма удобней, чем крутить длинный список.
а как получить эту дату начала?
(7)Ой спасибо Приятно слышать
Надо будет ещё заняться.. а то делаешь порой по работе велосипедов много разных и мопедов, а выкладывать лень
Вот как то так, прошу прощения, если вырезал что-то не так.
Обновление 10.12.14 01:12
Код открыт Не указано
См. также
Альтернативный способ добавления элементов и реквизитов на формы Промо
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.
09.09.2019 17765 34 bmk74 7
Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)
Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.
17.10.2021 2457 5 Патриот 48
Самые красивые шахматы для 1С на управляемых формах
Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.
18.02.2021 5539 13 compmir 30
Интерактивная справка по объектам 1С (подключаемое расширение)
База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.
29.09.2020 15672 82 sapervodichka 45
Расширенная настройка динамического списка УФ Промо
Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.
31.05.2017 39070 161 tormozit 25
Метод ВыбратьИзСписка() в обычной или управляемой форме
Открывает выпадающий список для выбора значения
Синтаксис
Метод ВыбратьИзСписка() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров метода ВыбратьИзСписка() :
Имя параметра | Тип | Описание |
---|---|---|
СписокЗначений | СписокЗначений | Список значений, содержащий значения, из которых будет осуществляться выбор. Примечание: Если в списке значений указаны картинки, то они отображаются в выпадающем списке. |
ЭлементФормы (необязательный) | ГруппаФормы, ТаблицаФормы, ПолеФормы, КнопкаФормы | Элемент формы, около которого будет открыт выпадающий список. Если не указан, то будет выбран активный элемент формы. |
НачальноеЗначение (необязательный) | Число, ЭлементСпискаЗначений | Задает начальный элемент, который будет активным по-умолчанию при открытии списка. |
Жирным шрифтом выделены обязательные параметры |
Возвращаемое значение
ЭлементСпискаЗначений | — если пользователь выбрал значение |
Неопределено | — если пользователь отказался от выбора |
Описание
Метод ВыбратьИзСписка() Открывает выпадающий список для выбора значения из предложенного списка. Выпадающий список будет расположен около переданного элемента формы или около его активной области.
Доступность
Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).
Пример использования
Пример кода с использованием метода ВыбратьИзСписка() :