Поиск информации в 1С аля «живой поиск Google»

Когда-то пришлось реализовывать интересную задачку, связанную с поиском информации в 1С.Ситуация следующая:

  1. В базе более 6 000 позиций товаров;
  2. Менеджер по продажам не знают, как точно называется товар (чтобы написать начало, а 1С подтянет все остальное);
  3. Постоянно заходить и выбирать товар из формы списка — долго;

Поэтому решили сделать нечто вроде «живого поиска» — менеджер вводит часть названия товара, а 1С выводит ему список товаров, которые подходят под условия поиска. Для этого надо сделать экспортную функцию «Живой поиск»

Живой поиск

Функция ЖивойПоиск(ТекстПоиска, ИмяСправочника) Экспорт
Если ТекстПоиска = "" Или ИмяСправочника = "" Тогда
Возврат Неопределено;
КонецЕсли;
 
Если Метаданные.Справочники.Найти(ИмяСправочника) = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
 
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Ссылка
|ИЗ
| Справочник." + ИмяСправочника + " КАК Таблица
|ГДЕ
| Таблица.Наименование ПОДОБНО &Наименование";
 
Параметр = "%" + ТекстПоиска + "%";
 
Запрос.УстановитьПараметр("Наименование", Параметр);
 
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
 
Возврат Список;
КонецФункции 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Потом в событии «ОкончаниеВводаТекста()» поля ввода делаем следующее:

Процедура
Процедура ПолеВводаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
 
	Список = ОбщегоНазначения.ЖивойПоиск(Текст, "Номенклатура");
 
	Если Список <> Неопределено Тогда
		Выбор = ВыбратьИзСписка(Список, Элемент);
 
		Если Выбор <> Неопределено Тогда
			Значение = Выбор.Значение;
		КонецЕсли;		
	КонецЕсли;	
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Процедура рассчитана на поиск в разных справочниках, который передается параметром.