HelpF.pro

Полнотекстовый Поиск - пример поиска контрагентов в базе

У клиента огромная база клиентов и соответственно огромный штат менеджеров. Дошло до того, что менеджеры в поисках новых клиентов( знакомство, интернет, реклама и т.д.) очень часто звонят одним и тем же клиентам по несколько раз. Стали вести базу звонков... Но в базе одного и того же клиента могли назвать по разному - как-только вздумается... 

Понадобился поиск по нечеткому названию и для этого решено было использовать полнотекстовый поиск 1С:

Механизм полнотекстового поиска в 1С позволяет быстро находить необходимую для пользователя информацию. Данный вид поиска особенно эффективен, если информационная база располагает большим объемом информации, а также точно не известно, где находятся интересующие пользователя данные или как часто бывает, их точное название не известно.

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

Приведу краткий пример реализации данного поиска, код:

Код 1C v 8.х
 

Процедура КнопкаВыполнитьНажатие(Кнопка)
Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() <> РежимПолнотекстовогоПоиска.Разрешить Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Использование полнотекстового поиска не разрешено. Вы можете включить его в диалоге ""Управление полнотекстовым поиском""'", "ru");
Сообщение.Сообщить();
Возврат;
КонецЕсли;

тчРезультата.Очистить();
текдок = Новый ТекстовыйДокумент;
текдок.УстановитьТекст(ТестПоиска);
Для Ном=1 по текдок.КоличествоСтрок() цикл
Стр = СокрЛП(текдок.ПолучитьСтроку(Ном));
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(Стр);
СписокПоиска.ПолучатьОписание = Истина;
СписокПоиска.РазмерПорции = 5;

СписокПоиска.ПорогНечеткости = ПорогНечеткости;

МассивОтбор = Новый Массив();
МассивОтбор.Добавить(Метаданные.Справочники.Контрагенты);
//МассивОтбор.Добавить(Метаданные.Документы.КассовыйЧек);
СписокПоиска.ОбластьПоиска = МассивОтбор;
СписокПоиска.ПерваяЧасть(); // Выдает по 5 результатов - РазмерПорции
// Если нужно листать
// СписокПоиска.ПредыдущаяЧасть(ТекущаяПозиция);      
// СписокПоиска.СледующаяЧасть(ТекущаяПозиция);      

Для каждого Результат Из СписокПоиска Цикл
нСтр=тчРезультата.Добавить();
нСтр.ТекстПоиска=Стр;
нСтр.Контрагент=Результат.Значение;
КонецЦикла;


КонецЦикла;

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


Процедура ПриОткрытии()
ПорогНечеткости=15;
КонецПроцедуры

Результат обработки:


Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq82/view/1742.html