1с показать выбор из списка
В 1С:Предприятии 8.2 нет поля выбора, но для элементов формы вида Поле ввода можно установить свойство РежимВыбораИзСписка в значение Истина . В этом случае поле ввода будет работать как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке выбора. Сам список значений для выбора задается в свойстве СписокВыбора этого поля.
Эти свойства можно установить в палитре свойств элемента формы Поле ввода , а можно задать программно при создании формы. Например:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список выбора в поле Город будет выглядеть следующим образом:
Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.
Существует несколько способов выбора значения из программно сформированного списка значений. Такое обилие вариантов обусловлено различными требованиями к интерфейсу системы.
Давайте рассмотрим основные варианты. Предположим, что у нас есть список значений из которого пользователю нужно выбрать какое-то одно:
А. Выбор непосредственно из списка значений
Самый простой способ выбрать значение — инициировать его выбор через метод СписокЗначений.ВыбратьЭлемент():
Обратите внимание, что метод возвращает не само значение, а объект ЭлементСпискаЗначений . К значению, хранящемуся в элементе, мы можем обратиться через одноименное свойство Значение .
Выглядеть это будет так:
Б. Выбор из выпадающего списка
При использовании этого способа список выбора будет показан не в независимом окне, а с привязкой к элементу формы. Для реализации этого способа воспользуемся стандартным методом формы ВыбратьИзСписка():
Выглядеть это будет так:
В. Выбор из выпадающего меню
Этот способ похож на предыдущий, но список выбора будет показан в виде выпадающего подменю. Этот способ уместнее использовать с элементами формы типа Кнопка. Для реализации этого способа воспользуемся методом формы ВыбратьИзМеню():
« Как стать программистом 1С » Язык 1С » Выпадающий список значений 1С на форме
Выпадающий список значений 1С на форме
Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.
Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.
Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()
Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)
- Включим кнопку выбора списка
- В свойстве «Список выбора» нажмите «…» и введите варианты
- Результат выбора будет сохранен в выбранном реквизите
Выпадающий список значений 1С на форме — Вариант 2)
- Включим кнопку выбора списка
- Добавим обработчик «НачалоВыбораИзСписка»
Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.
Организация выбора из произвольной формы (на примере выбора из списка регистра сведений)
1С:Предприятие 8 поддерживает готовую функциональность для организации выбора из форм списков объектных данных (справочников, документов и т.д.). В большинстве случаев выбираются именно такие значения. Однако, в некоторых случаях, необходимо организовать выбор и других значений. Механизм форм 1С:Предприятия 8 включает универсальный механизм выбора, позволяющий организовать выбор практически любых значений.
Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.
В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.
Вначале создадим новую форму списка регистра сведений и назовем ее "ФормаВыбора". В форме реализуем событие Выбор табличного поля отображающего список.
В этом событии мы отменяем стандартное действие, предусмотренное расширением табличного поля, и вместо него вызываем метод ОповеститьОВыборе() , передавая ему в качестве параметра текущую строку. Значением текущей строки будет являться значение типа РегистрСведенийКлючЗаписи.<имя> .
Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода "Валюта" и "Период".
Вначале мы сформируем ключ записи регистра сведений, который будет использоваться для установки в списке текущей строки в соответствии с текущими значениями полей ввода. Сама установка будет выполняться через стандартный параметр формы ПараметрТекущаяСтрока .
Заметим, что если для установки текущей строки расширение формы не предоставляет стандартного параметра, то можно создать свой реквизит у формы выбора, заполнить его аналогично заполнению стандартного параметра в этом примере, и при открытии формы обеспечить позиционирование в списке в соответствии со значением данного реквизита.
Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.
Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.
Заметим, что в качестве владельца формы может устанавливаться не только сама форма, в которой осуществляется выбор, но и ТабличноеПоле , ПолеВвода и ПолеВыбора . Соответственно и обработчик выбора нужно будет реализовывать у этих элементов управления.
в 7ке помню была такая возможность, а 8ке в хелпе открываю раздел "Функция для вызова диалога ввода данных" - так там только ввести значение, дату, число, строку. Списка значений нет
Не создавать же для этой фигни отдельную форму?
Синтаксис:
ВыбратьЭлемент(<Заголовок>, <Элемент>)
Параметры:
<Заголовок> (необязательный)
Тип: Строка. Заголовок окна выбора. Если параметр не указан, то используется стандартный заголовок.
Тип: ЭлементСпискаЗначений. Элемент, на который следует изначально спозиционировать список значений при интерактивном выборе. Если значением параметра не является элемент списка значений, входящий в данный список, позиционирования не произойдет.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений. Если пользователь отказался от выбора, возвращает Неопределено.
Описание:
Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений.
Пример:
Синтаксис:
ВыбратьИзСписка(<Список значений>, <Элемент формы>, <Начальное значение>)
Параметры:
<Список значений> (обязательный)
<Элемент формы> (необязательный)
Тип: Элемент управления. Элемент формы, около которого будет открыт выпадающий список. Для некоторых элементов (табличный документ, табличное поле) выпадающий список будет показан около активной области. Если не указан, то будет выбран активный элемент формы.
<Начальное значение> (необязательный)
Тип: Число, ЭлементСпискаЗначений. Задает начальный элемент, который будет активным при открытии списка. Если параметр не указан, в списке не будет выбрано начальное значение.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений. Выбранный элемент списка или Неопределено, если пользователь отказался от выбора.
Описание:
Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Если в списке значений указаны картинки, то они отображаются в выпадающем списке.
Пример:
Синтаксис:
ВыбратьИзМеню(<Список значений>, <Элемент формы>)
Параметры:
<Список значений> (обязательный)
<Элемент формы> (необязательный)
Тип: Элемент управления. Элемент формы, около которого будет открыт выпадающий список. Для некоторых элементов (табличный документ, табличное поле) выпадающий список будет показан около активной области. Если не указан, то будет выбран активный элемент формы.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений. Выбранное значение из меню или Неопределено, если пользователь отказался от выбора.
Описание:
Вызывает меню для выбора значения. Набор значений для выбора задается списком значений. Меню будет расположено около переданного элемента формы или около его активной области.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Если в списке значений указаны пометки или картинки, то они отображаются в меню.
Пример:
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
Работаю в 8.3.5Только начинаю разбираться в платформе, до этого с 1С имел дело только как пользователь. Сейчас стоит задача написать свою небольшую конфу для нашего маленького предприятия. Накупил кучку книжек, сижу изучаю. Голова уже пухнет. Не могу своим мозгом понять как реализовать такой функционал:
Есть документ ЗаказНаряд в котором есть реквизит Комплектность с типом Поле ввода.Ясен пень, у документа есть форма с этим реквизитом.В форме документа, требуется вызывать кнопкой выбора (. ) у этого поля, окно в котором можно отметить галочками значения которые по нажатию ОК в этом окне, попадут в это поле ввода.Сами значения в этом окне должны браться из наименований элементов справочника Подстановки, причем из элементов находящихся в определенной группе этого справочника.Поле ввода необходимо, что бы помимо того, что выберет пользователь, он мог в некоторых случаях дописать некоторые данные руками.
Прошу ткнуть носом как это сделать, ибо голова уже кипит.
На всякий набросал как я себе это вижу.
Комплектность должна быть строка и не обязательно реквизит документа, это может быть просто элемент формы.
Еще у документа должна быть ТЧ как раз для хранения списка значений подстановок.
На обработчик начало выбора для комплектности организовать выбор из списка значений, в который помещены элементы из справочника подстановок.
После отметки нужных подстановок необходимо из помеченных элементов сформировать строку и поместить ее в комплектность и также записать их в ТЧ.
Касаемо дописки, мне кажется нужно сделать отдельный строковый реквизит "ДопКомплектность", и в нем уже дополнения писать и присоединять их к комплектности.
К сожалению не смог понять Ваш совет и сделал по своему.
Путем долгих мучений получилось добиться промежуточного результата.
Я написал функцию которая получает колонку "Наименование" справочника Подстановки, и вызвал ее в событии начала выбора в поле комплектности.
В результате стал выпадать список с нужными мне значениями.
Но как я писал выше, мне требуется вызывать окно, в котором можно отметить галочками нужные мне значения и в результате заполнять этими значениями поле Комплектность.
Тут у меня случился ступор, из которого я не могу выйти. Прошу подсказать как это сделать.
Зачем такая сложная реализация!?
сделайте табличную часть и выведете в нее эти значения и поле флажка, пусть пользователи выбирают галками в табличной части
В смысле просто, в форму документа поместить таблицу с значениями и флажками?
Мне очень критично именно поле ввода с таким функционалом как я описал выше, таблица в форме не подойдет ((
Потихоньку буду вникать в Ваш вариант реализации, ибо опыта ноль, не все понятно сразу.
А если просто с ходу опробовать Ваш код, то в режиме отладки по нажатии у поля кнопки выбора вызывается окно, там есть элементы справочника Подстановки, но в независимости от того, стоят отметки или нет, при нажатии "ОК" сначала ругается на :
В итоге получил тот же результат, но без использования табличной части.
Подскажите, есть какая то разница между способом где используется ТЧ и не используется?
Табличная часть нужна для сохранения списка выбранных значений в документе, другого варианта я просто не знаю.
Это ведь только первый этап - выбрать из списка, вам же нужно будет этими значениями пользоваться. При повторном открытии документа вам нужно будет учитывать, что пользователь выбрал ранее и восстановить при открытии списка пометки его элементов. Пользоваться строкой для этого очень неудобно.
В табличной части реквизит "Подстановка" - это не строка, это ссылка в справочник "Подстановки".
В данном случае достаточно и того, что можно выбрать из списка. Это поле заполняется один раз при создании документа и более выбор не используется.
Огромная Вам благодарность! Очень помогли.
Читайте также: