Top.Mail.Ru

Как сделать поиск элементов в поле ввода по номеру телефона

Часто приходится искать элементы в поле ввода. Если это справочник, то поиск происходит по коду или по наименованию. Иногда бывает необходимо быстро найти по другому реквизиту, а стандартные настройки не позволяют этого сделать.

Рассмотрим небольшую доработку, которая позволяет видеть всех контрагентов с похожим набором цифр, при вводе номера телефона в поле ввода в любом месте конфигурации.

Понадобится процедура ОбработкаПолученияДанныхВыбора  в модуле менеджера справочника Контрагенты.

Справочник Контрагенты – типовой, поэтому эта процедура уже есть, и в ней определен поиск по наименованию, ИНН и Регистрационному номеру.

В данном случае необходимо добавить поиск по номеру телефона, добавляем свой запрос с необходимыми параметрами.

Также необходимо настроить представление найденных элементов.

Если у справочника нет такой процедуры, то необходимо добавить поиск по своему полю по такому же принципу, на примере другого справочника:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;

	Текст = Параметры.СтрокаПоиска;
	СловаПоиска = ОбщегоНазначенияДокументооборот.СловаПоиска(Текст);
	ДанныеВыбора = Новый СписокЗначений;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 50
	|	ВопросыДеятельности.Ссылка КАК Ссылка,
	|	""Наименование"" КАК ПолеСовпадения,
	|	ВопросыДеятельности.Наименование КАК ЗначениеПоля,
	|	ВопросыДеятельности.Представление КАК Вопрос
	|ИЗ
	|	Справочник.ВопросыДеятельности КАК ВопросыДеятельности
	|ГДЕ
	|	ВопросыДеятельности.ПометкаУдаления = ЛОЖЬ
	|	И ВопросыДеятельности.Наименование ПОДОБНО &Текст
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ ПЕРВЫЕ 50
	|	ВопросыДеятельности.Ссылка,
	|	""Комментарий"",
	|	ВопросыДеятельности.Комментарий,
	|	ВопросыДеятельности.Представление
	|ИЗ
	|	Справочник.ВопросыДеятельности КАК ВопросыДеятельности
	|ГДЕ
	|	ВопросыДеятельности.ПометкаУдаления = ЛОЖЬ
	|	И ВопросыДеятельности.Комментарий ПОДОБНО &Текст";
	
	Запрос.УстановитьПараметр("Текст", 	"%" + Текст + "%");
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		Если Выборка.ПолеСовпадения = "Наименование" Тогда 
			ПредставлениеФорматированнаяСтрока = ОбщегоНазначенияДокументооборот.ФорматированныйРезультатПоиска(
				Выборка.Вопрос,
				СловаПоиска);
			
			ДобавкаТекста = СтрШаблон(НСтр("ru = ' (%1)'"), "Вопрос");
				
			ПредставлениеФорматированнаяСтрока = Новый ФорматированнаяСтрока(
				ПредставлениеФорматированнаяСтрока,
				Новый ФорматированнаяСтрока(ДобавкаТекста,
					, WebЦвета.Серый)
				);
						
		ИначеЕсли Выборка.ПолеСовпадения = "Комментарий" Тогда 
			ПредставлениеФорматированнаяСтрока = ОбщегоНазначенияДокументооборот.ФорматированныйРезультатПоиска(
				Выборка.ЗначениеПоля,
				СловаПоиска);
			
			ДобавкаТекста = СтрШаблон(НСтр("ru = ' (%1)'"), Выборка.Вопрос);
				
			ПредставлениеФорматированнаяСтрока = Новый ФорматированнаяСтрока(
				ПредставлениеФорматированнаяСтрока,
				Новый ФорматированнаяСтрока(ДобавкаТекста,
					, WebЦвета.Серый)
				);
				
		КонецЕсли;
				
		ДанныеВыбора.Добавить(Выборка.Ссылка, ПредставлениеФорматированнаяСтрока);
		
	КонецЦикла;


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

Надеюсь, что статья поможет легко и быстро находить элементы справочников.

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar