1с быстрый выбор в поле ввода
Работа с полем выбора
Элемент управления «Поле выбора» предназначен для хранения и быстрого выбора одного из значений, входящих в его список выбора. Список выбора для поля выбора есть список значений. Значением поля выбора является одно единственное значение, а не весь список выбора.
Установка значения в поле выбора
В Поле выбора можно установить любое значение. В процессе установки значения будет выполнен его поиск среди значений, входящих в список выбора. Если устанавливаемое значение найдено в списке выбора, оно будет сохранено в поле выбора, иначе в поле выбора будет установлено значение «Неопределено». Исключение составляет значение «Неопределено», которое можно установить в поле выбора в любом случае, независимо от того, какие значения при этом хранятся в списке выбора.
Например, если список выбора имеет значениями числа 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С 8.2 Выбор значения по умолчанию из подчиненного справочника
Есть два справочника. И хочется что бы в форме справочника родитель одно поле заполнялось по.
Выбор справочника
Имеется несколько справочников. Как вызвать форму выбора справочников?
1c8.2 Быстрый выбор по введеным буквам
Подскажите пожалуйста, у меня есть справочник 2000 наименований, созданный мной как и конфигурация.
Ну ты хоть иногда читай синтакс-помощник.
Тип: СписокЗначений.
В обработчике можно сформировать и передать в этом параметре данные для выбора. При этом параметр должен быть установлен в Ложь.
В элемент списка значений можно помещать не только конкретное значение, но и структуру.
Анализ значения на предмет того, является ли она структурой или просто значением, используется полем ввода управляемой формы в случаях:
sigmov, писанины-то больше
Добавлено через 1 минуту
Добавлено через 2 минуты
опять не так. Вот классика:
upd: уломал про «ссылка»
Добавлено через 3 минуты
ну и дожать:
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Выбор из справочника элементов
1С предприятие 8.2 Можно ли сделать так, чтобы после выбора очередного элемента справочника.
Запрет на выбор подгруппы справочника
Здравствуйте уважаемые форумчани. Есть документ Оказание услуги, в табличной части документа есть.
8.2 Выбор ссылки на элемент справочника
Возникла запарка: необходимо сделать документ, в котором будет осуществляться запись клиента на.
Выбор Из Справочника Нескольких Реквезитов.
Добрый вечер. Хотелось бы выводить несколько реквезитов в документ при выборе одного из.
Быстрый ввод строковых значений в поля составного типа
Пример: в документе «Встреча» нужно вводить как заведенные в справочнике «Площадки» значения, так и произвольные строки. Такая необходимость может возникнуть в том случае, когда замусоривание справочника случайными значениями нежелательно.
Типовое поведение полей ввода значений составного типа не позволяет простым набором текста и нажатием Enter ввести строковое значение:
— при позиционировании в таком поле нельзя сразу начать набор текста: сначала нужно нажать на «педальку» (или F4) и выбрать тип:
2) при ненайденном элементе справочника платформа показывает всплывающее окно с кнопкой создания элемента и гиперссылкой «Показать все», от которого (без применения мышки) можно «избавиться»* только через Esc, либо стерев введенный текст:
* под «избавиться» подразумевается ввод желаемого строкового значения с клавиатуры, а не выбор из предлагаемых элементов справочника или создание нового
Далее предлагается метод, который позволяет пользователю после набора текста сразу вводить значение в поле ввода по нажатию Enter (без показа диалогов и всплывающих окон). При этом:
— можно как выбирать любое значение из справочника:
— так и вводить произвольное строковое значение:
Для реализации такого поведения требуется выполнить следующие шаги:
1. В модуле формы в ПриСозданииНаСервере() выставить для поля ввода ограничение типа:
2. В событии НачалоВыбора() поля ввода реализовать возможность выбора элементов справочника:
3. Наконец, реализовать возможность подбирать в поле ввода элементы из справочника простым набором текста, добавив обработчик события АвтоПодбор():
Быстрый отбор в форме списка (выбора) справочника
Установка быстрых отборов в форме списка (выбора) справочника (для новичков)
Я сам новичок в 1С и знаю, как трудно поначалу разобраться в море незнакомой информации и быстро найти нужную для решения какой-либо срочной задачи. Поэтому эту статейку пишу и для себя тоже.
Иногда пользователю нужно быстро отобрать нужные строки в списке по нескольким не точным критериям.
В списках отбор может быть установлен вручную пользователем стандартным способом через контекстное меню списка «Установить отбор и сортировку списка»
Но если отборы часто используемые, то мы можем вынести поля для ввода критериев на форму и устанавливать отборы программно.
1) Рассмотрим установку такого отбора на примере списка справочника Номенклатура.
Открываем в конфигураторе форму списка справочника Номенклатура.
Уменьшим высоту табличного поля «Список».
На освободившееся место над табличным полем разместим 5 элементов:
со следующими именами:
2) фНомер – Булево
3) отбНомер – Строка(20)
4) фНаименование – Булево
5) отбНаименование – Строка(150)
Результат будет выглядеть примерно так:
Сверим список реквизитов формы на закладке «Реквизиты», наши новые обведены красным:
Теперь пишем в модуле формы обработчики событий «При изменении» для флажков и полей ввода.
И в созданную заготовку процедуры вписываем нужный код:
Вот код этих четырех обработчиков:
// при изменении флажка фНомер
Процедура фНомерПриИзменении ( Элемент )
// если не заполнен Номер для отбора не будем понапрасну дергать Отбор
Если ЗначениеЗаполнено ( отбНомер ) Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры
// при изменении поля ввода отбНомер
Процедура отбНомерПриИзменении ( Элемент )
// если не установлен флажок не будем понапрасну дергать Отбор
Если фНомер Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры
Процедура фНаименованиеПриИзменении ( Элемент )
// если не заполнено Наименование для отбора не будем понапрасну дергать Отбор
Если ЗначениеЗаполнено ( отбНаименование ) Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры
Процедура отбНаименованиеПриИзменении ( Элемент )
// если не установлен флажок не будем понапрасну дергать Отбор
Если фНаименование Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры
На двух наших полях ввода включим свойство «КнопкаОчистки».
При очистке поля ввода мы будем сбрасывать соответсвующий флажок и перечитывать отбор:
// при очистке поля ввода отбНомер
Процедура отбНомерОчистка ( Элемент , СтандартнаяОбработка )
фНомер = Ложь;
УстановитьОтборыФормы ();
КонецПроцедуры
// при очистке поля ввода отбНаименование
Процедура отбНаименованиеОчистка ( Элемент , СтандартнаяОбработка )
фНаименование = Ложь;
УстановитьОтборыФормы ();
КонецПроцедуры
Теперь пишем процедуру установки отбора:
Процедура УстановитьОтборыФормы ()
// запомним состояние иерархии
мИерархическийПросмотр = ЭлементыФормы.Список.ИерархическийПросмотр;
Если ( фНомер И НЕ ПустаяСтрока ( отбНомер ))
или ( фНаименование И ЗначениеЗаполнено ( отбНаименование ))
Тогда
// получаем запросом список с установленными критериями отбора
сз = ВернутьСписок ();
А теперь пишем функцию, выбирающую запросом ссылки по введенным пользователем критериям и возвращающую как результат список отобранных ссылок:
Функция ВернутьСписок ()
Запрос = Новый Запрос ;
Вот результат отбора по двум критериям:
Взглянем на форму отборов опять для сравнения и видим на ней установленный наш отбор по ссылке:
2) Рассмотрим более сложный пример со справочником «Основные средства».
Размещаем над списком 7 элементов:
Где 1 – это просто метка, а остальные реквизиты имеют следующие типы:
Добавим в модуль списка новую процедуру ЭлементОтбораПриИзменении и впишем в нее следующий код:
Процедура ЭлементОтбораПриИзменении ( Элемент )
УстановитьОтборыФормы ();
КонецПроцедуры
Всем новым элементам (кроме метки, хе-хе) назначаем этот обработчик, чтобы не плодить их тучу однотипных:
Пишем процедуру установки снятия отбора:
Если ( флПоИнвНомеру и НЕ ПустаяСтрока ( отбИнвНомер ))
или ( флПоПодразделению и ЗначениеЗаполнено ( отбПодразделение ))
или ( флПоМОЛ и ЗначениеЗаполнено ( отбМОЛ ))Тогда
И пишем еще одну процедурку получения списка ссылок запросом.
Здесь мы будем получать последние сведения по ОС из регистров сведений:
— Инвентарный Номер из РС ПервоначальныеСведения
— Подразделение и МОЛ из РС МестонахождениеОС.
Запрос = Новый Запрос ;
Если флПоИнвНомеру и НЕ ( флПоПодразделению или флПоМОЛ ) Тогда
Если флПоПодразделению И ЗначениеЗаполнено ( отбПодразделение ) Тогда
аргУсловие = «МестонахождениеОССрезПоследних.Местонахождение = &пПодразделение»
КонецЕсли;
Если НЕ флПоИнвНомеру Тогда
Теперь добавляем в список две новых колонки МОЛ и Местонахождение без привязки к данным
Установим их свойства «Видимость» в Ложь, чтобы они не светились в списке сразу. Их заполение мы будем обрабатывать в событии ПриПолученииДанных (см. ниже)
В свойстве ЭлементУправления обоим назначаем «Поле ввода»
В обработчик ПриПолученииДанных добавляем код для отображения значений наших добавленных колонок:
Открываем список ОС, устанавливаем видимость наших новых колонок МОЛ и Местонахождение, вводим критерии отбора и вуаля:
P . S .
Недостаток рассмотренного подхода в том, что если ранее был каким-либо образом установлен отбор по ссылке, то он будет затерт нашим.
Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий «НачалоВыбора», «Автоподбор»)
Для ограничения вывода элементов какого-нибудь справочника или перечисления при редактировании поля ввода можно воспользоваться программной установкой свойства элемента формы «ПараметрыВыбора», которое доступно, начиная с версии платформы 8.2.
Данное свойство представляет собой фиксированный массив элементов типа «ПараметрВыбора», позволяет организовать простую фильтрацию доступных для выбора элементов в поле ввода. При этом фильтрация будет работать как при автоподборе, так и при открытии формы выбора.
Рассмотрим пару типовых случаев применения этого свойства для установки отбора:
Отфильтруем ввод сотрудника по значению реквизита «Организация» на форме документа.
Фильтрация будет установлена у поля ввода «СписокСотрудниковСотрудник», в таблице документа.
Для выбора будут доступны только те сотрудники, у которых значения реквизита «Организация» совпадает со значением, установленным в реквизите «Организация» документа.
Вот так будет выглядеть процедура установки фильтра:
Данная процедура вызывается в событии формы «ПриОткрытии» и в событии «ПриИзменении» поля ввода «Организация».
Не всегда достаточно одного значения сравнения, следующий случай продемонстрирует, как накладывать отбор по списку ссылок.
Фильтрация будет установлена у поля ввода «Статус».
Если у сохранённого документа установлен статус «Черновик», то список доступных элементов перечисления «Статусы» будет ограничен значениями «Черновик» и «НаРассмотрении».
Данная процедура вызывается в событиях формы «ПриСозданииНаСервере» и «ПослеЗаписиНаСервере»
Кроме этого в параметрах выбора можно устанавливать свои нетиповые свойства:
Данный параметр потом можно будет извлечь из параметров формы выбора справочника «Сотрудники» (в событии «ПриСозданииНаСервере»), а также из параметров в обработчике «ОбработкаПолученияДанныхВыбора» в модуле менеджера справочника «Сотрудники».































