Каталог решений - Быстрый ввод строковых значений в поля составного типа

Быстрый ввод строковых значений в поля составного типа

Быстрый ввод строковых значений в поля составного типа

В наличии

Когда нужно дать пользователю возможность вводить с клавиатуры строковые значения в поле ввода составного типа

Категория:

Описание

Пример: в документе «Встреча» нужно вводить как заведенные в справочнике «Площадки» значения, так и произвольные строки. Такая необходимость может возникнуть в том случае, когда замусоривание справочника случайными значениями нежелательно.

Типовое поведение полей ввода значений составного типа не позволяет простым набором текста и нажатием Enter ввести строковое значение:

— при позиционировании в таком поле нельзя сразу начать набор текста: сначала нужно нажать на «педальку» (или F4) и выбрать тип:

2) при ненайденном элементе справочника платформа показывает всплывающее окно с кнопкой создания элемента и гиперссылкой «Показать все», от которого (без применения мышки) можно «избавиться»* только через Esc, либо стерев введенный текст:

* под «избавиться» подразумевается ввод желаемого строкового значения с клавиатуры, а не выбор из предлагаемых элементов справочника или создание нового

Далее предлагается метод, который позволяет пользователю после набора текста сразу вводить значение в поле ввода по нажатию Enter (без показа диалогов и всплывающих окон). При этом:

— можно как выбирать любое значение из справочника:

— так и вводить произвольное строковое значение:

Для реализации такого поведения требуется выполнить следующие шаги:

1. В модуле формы в ПриСозданииНаСервере() выставить для поля ввода ограничение типа:

 

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
Элементы.МестоПроведенияВстречи.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов, Новый КвалификаторыСтроки(200));

2. В событии НачалоВыбора() поля ввода реализовать возможность выбора элементов справочника:

&НаКлиенте
Процедура МестоПроведенияВстречиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;

	ПараметрыФормы = Новый Структура;
	Если ТипЗнч(Объект.МестоПроведенияВстречи) = Тип("СправочникСсылка.Площадки") И ЗначениеЗаполнено(Объект.МестоПроведенияВстречи) Тогда
		ПараметрыФормы.Вставить("ТекущаяСтрока", Объект.МестоПроведенияВстречи);
	КонецЕсли;

	ОткрытьФорму("Справочник.Площадки.ФормаВыбора", ПараметрыФормы, Элемент);
	
КонецПроцедуры

3. Наконец, реализовать возможность подбирать в поле ввода элементы из справочника простым набором текста, добавив обработчик события АвтоПодбор():

&НаКлиенте
Процедура МестоПроведенияВстречиАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
	Если Ожидание <> 0 И НЕ ПустаяСтрока(Текст) Тогда
		
		СтандартнаяОбработка = Ложь;
		ДанныеВыбора = ПолучитьСписокВыбораПлощадок(Текст);
		
	КонецЕсли;
	
КонецПроцедуры

// Процедура заполняет данные выбора площадки.
//
// Параметры:
//  СтрокаПоиска - Строка	 - Набираемый текст
&НаСервереБезКонтекста
Функция ПолучитьСписокВыбораПлощадок(знач СтрокаПоиска)
	
	СписокВыбораПлощадки = Новый СписокЗначений;
	
	ПараметрыВыбора = Новый Структура;
	ПараметрыВыбора.Вставить("Отбор", Новый Структура("ПометкаУдаления", Ложь));
	ПараметрыВыбора.Вставить("СтрокаПоиска", СтрокаПоиска);
	ПараметрыВыбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
	
	ДанныеВыбораПлощадки = Справочники.Площадки.ПолучитьДанныеВыбора(ПараметрыВыбора);
	
	Для Каждого ЭлементСписка Из ДанныеВыбораПлощадки Цикл
		СписокВыбораПлощадки.Добавить(ЭлементСписка.Значение, Новый ФорматированнаяСтрока(ЭлементСписка.Представление, " (площадка)"));
	КонецЦикла;
	
	Возврат СписокВыбораПлощадки;
	
КонецФункции

После выполнения перечисленных шагов ваши пользователи смогут вводить в поле произвольные строковые значения, а при наличии подходящих элементов в справочнике — быстро (удобно) выбирать их.

has been added to your cart:
Оформление заказа