В 1С:Предприятии 8.2 нет поля выбора, но для элементов формы вида Поле ввода можно установить свойство РежимВыбораИзСписка в значение Истина . В этом случае поле ввода будет работать как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке выбора. Сам список значений для выбора задается в свойстве СписокВыбора этого поля.
Эти свойства можно установить в палитре свойств элемента формы Поле ввода , а можно задать программно при создании формы. Например:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Город.РежимВыбораИзСписка = Истина;
Элементы.Город.СписокВыбора.Добавить(«Москва»);
Элементы.Город.СписокВыбора.Добавить(«Монино»);
Элементы.Город.СписокВыбора.Добавить(«Щелково»);
Список выбора в поле Город будет выглядеть следующим образом:
Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.
В предыдущей статье «Изучаем список значений 1С» я показал, каким образом можно программного работать со списком значений. Мы научились добавлять, вставлять и загружать нужные элементы в список. Но со списком значений можно работать на управляемой форме 1С, когда он используется в качестве реквизита этой формы. В этой статье мы разберем вопросы работы со списком значений на форме.
На управляемой форме 1С список значений можно разместить в качестве реквизита управляемой формы.
Мы уже знаем, что каждый элемент списка значений содержит значения типа Элемент списка значений, но можно задать тип данных, которые будут содержаться в этом элементе. Делается это при помощи свойства реквизита – тип значения. В этом случае, все элементы заданного списка значений будут одного типа.
Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.
После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.
Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.
Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.
С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.
&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Запрос = Новый Запрос ;
Запрос . Текст = «ВЫБРАТЬ
| Склады.Ссылка КАК Ссылка,
| Склады.Представление КАК Представление
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| НЕ Склады.НеИспользовать» ;
Выборка = Запрос . Выполнить (). Выбрать ();
Пока Выборка . Следующий () Цикл
Список . Добавить ( Выборка . Ссылка , Выборка . Представление );
КонецЦикла;
В этом случае, список заполниться сразу при открытии формы.
Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Управляемые формы. Настраиваем отбор в списке выбора.
Исходные данные:
Информационная база на основе конфигурации «1С:ERP Управление предприятием 2». Несколько пользователей могут создавать в базе документы «Табель учёта рабочего времени», причём у каждого пользователя есть свой перечень подразделений, по которым он может ввести табель. Список доступных подразделений для каждого пользователя хранится в регистре сведений.
Задача:
Сделать так, чтобы в форме документа «Табель учёта рабочего времени» при заполнении реквизита «Подразделение» пользователь мог выбирать только из доступных ему подразделений. То есть, нужно организовать отбор.
Реализация решения:
Можно выполнить решение непосредственно в конфигурации, а можно воспользоваться механизмом расширений конфигурации.
Итак, в режиме «Конфигуратор», в списке объектов конфигурации находим документ «Табель учёта рабочего времени» и открываем для редактирования его форму «Форма документа».
Нас интересует элемент формы «Подразделение» и его кнопка «Выбор из списка». Обработаем событие «НачалоВыбора», создав соответствующую процедуру в модуле формы.
ДанныеВыбора – этим параметром мы и формируем список выбора. В итоге, пользователь, нажав кнопку выбора, увидит сформированный нами список подразделений.
Но есть ещё одна проблема: если пользователь начнёт вводить название подразделения в поле ввода, то система предложит ему список всех подразделений, а не только доступных.
Я попробовал исправить это таким образом:
Но ничего не вышло. Поле ввода вообще перестало заполняться.
После этого была ещё попытка добиться желаемого результата с помощью события «ИзменениеТекстаРедактирования», однако и она не увенчалась успехом. В синтаксис-помощнике, в описании этого события, говорится, что оно не допускает вызова серверных процедур, а получение списка нужных подразделений видится логичным именно на сервере.
Более удачной стала мысль сформировать список подразделений при создании формы. И в соответствии с этой мыслью в обработчик события «ПриСозданииНаСервере» был добавлен следующий код:
Вот после такой настройки выбор в поле «Подразделение» стал работать так, как нам нужно.