1С как ограничить список выбора

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

Эти свойства можно установить в палитре свойств элемента формы Поле ввода , а можно задать программно при создании формы. Например:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.Город.РежимВыбораИзСписка = Истина;
Элементы.Город.СписокВыбора.Добавить("Москва");
Элементы.Город.СписокВыбора.Добавить("Монино");
Элементы.Город.СписокВыбора.Добавить("Щелково");

Список выбора в поле Город будет выглядеть следующим образом:

Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.

Управляемые формы. Настраиваем отбор в списке выбора.

Исходные данные:
Информационная база на основе конфигурации "1С:ERP Управление предприятием 2". Несколько пользователей могут создавать в базе документы "Табель учёта рабочего времени", причём у каждого пользователя есть свой перечень подразделений, по которым он может ввести табель. Список доступных подразделений для каждого пользователя хранится в регистре сведений.

Задача:
Сделать так, чтобы в форме документа "Табель учёта рабочего времени" при заполнении реквизита "Подразделение" пользователь мог выбирать только из доступных ему подразделений. То есть, нужно организовать отбор.

Реализация решения:
Можно выполнить решение непосредственно в конфигурации, а можно воспользоваться механизмом расширений конфигурации.

Итак, в режиме "Конфигуратор", в списке объектов конфигурации находим документ "Табель учёта рабочего времени" и открываем для редактирования его форму "Форма документа".

Нас интересует элемент формы "Подразделение" и его кнопка "Выбор из списка". Обработаем событие "НачалоВыбора", создав соответствующую процедуру в модуле формы.

ДанныеВыбора – этим параметром мы и формируем список выбора. В итоге, пользователь, нажав кнопку выбора, увидит сформированный нами список подразделений.

Читайте также:  Точка распространения crl недоступна

Но есть ещё одна проблема: если пользователь начнёт вводить название подразделения в поле ввода, то система предложит ему список всех подразделений, а не только доступных.

Я попробовал исправить это таким образом:

Но ничего не вышло. Поле ввода вообще перестало заполняться.

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

Более удачной стала мысль сформировать список подразделений при создании формы. И в соответствии с этой мыслью в обработчик события "ПриСозданииНаСервере" был добавлен следующий код:

Вот после такой настройки выбор в поле "Подразделение" стал работать так, как нам нужно.

Как ограничить список выбора?

Ограничим список элементов, установив отбор в открываемой форме
Код 1C v 8.х

Использование выбора из списка
Код 1C v 8.х

Похожие FAQ

Еще в этой же категории

Как на управляемой форме разместить список регистра сведений с отбором? 15
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Поле выбора

Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип – Произвольный, Использование – Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 9
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Как обновить динамический список или реквизит на форме клиента? 7
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Форма

Читайте также:  Что будет если поставить конденсатор меньшей емкости

Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Оцените статью
Добавить комментарий

Adblock detector