Каталог решений - Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")

Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")

Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")

В наличии

Зачастую возникает необходимость ограничить вывод элементов какого-нибудь справочника или перечисления при редактировании поля ввода (отфильтровать доступные для выбора элементы) эта публикация показывает простой и эффективный способ реализации этого.

Категория:

Описание

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

Данное свойство представляет собой фиксированный массив элементов типа "ПараметрВыбора", позволяет организовать простую фильтрацию доступных для выбора элементов в поле ввода. При этом фильтрация будет работать как при автоподборе, так и при открытии формы выбора.

Рассмотрим пару типовых случаев применения этого свойства для установки отбора:

Отфильтруем ввод сотрудника по значению реквизита "Организация" на форме документа.

Фильтрация будет установлена у поля ввода "СписокСотрудниковСотрудник", в таблице документа.
Для выбора будут доступны только те сотрудники, у которых значения реквизита "Организация" совпадает со значением, установленным в реквизите "Организация" документа.

Вот так будет выглядеть процедура установки фильтра:

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

Данная процедура вызывается в событии  формы "ПриОткрытии" и в событии "ПриИзменении" поля ввода "Организация".

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

Фильтрация будет установлена у поля ввода "Статус".

Если у сохранённого документа установлен статус "Черновик", то  список доступных элементов перечисления "Статусы" будет ограничен значениями "Черновик" и "НаРассмотрении".

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

Данная процедура вызывается в событиях  формы "ПриСозданииНаСервере" и "ПослеЗаписиНаСервере"

 

Кроме этого в параметрах выбора можно устанавливать свои нетиповые свойства:

&НаКлиенте
Процедура ЗадатьПараметрыВыбораСотрудника()
	
	Перем мПараметрыВыбора, Параметр;
	
	мПараметрыВыбора = Новый Массив();
	
	Параметр = Новый ПараметрВыбора("ИспользоватьНетиповойОтбор", Истина);
	мПараметрыВыбора.Добавить(Параметр);
	ЭтаФорма.Элементы.СписокСотрудниковСотрудник.ПараметрыВыбора = Новый ФиксированныйМассив(мПараметрыВыбора);
	
КонецПроцедуры

Данный параметр потом можно будет извлечь из параметров формы выбора справочника "Сотрудники" (в событии "ПриСозданииНаСервере"), а также из параметров в обработчике "ОбработкаПолученияДанныхВыбора" в модуле менеджера справочника "Сотрудники".

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

//Код нашего нетипового обработчика формирования данных для выбора, когда осуществляется ввод по строке
...

КонецПроцедуры

 

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