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