1С полнотекстовый поиск

  • автор:

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

Полнотекстовый поиск предоставляет следующие возможности:

  • Есть поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ 7.79-2000). Пример: «русская фраза» = «russkaya fraza».
  • Есть поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами). Пример: «руссrfz фраpf» (окончания каждого слова набраны латиницей, допустим, в результате ошибки оператора).
  • Есть возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости. Пример: указав в строке поиска слово «привет» и нечеткость 17 %, найдем все аналогичные слова с ошибками и без: «привет», «превет», «привед».
  • Есть возможность указать область выполнения поиска по выбранным объектам метаданных.
  • Полнотекстовое индексирование названий стандартных полей («Код», «Наименование» и т. д.) производится на всех языках конфигурации.
  • Поиск выполняется с учетом синонимов русского, английского и украинского языков.
  • Морфологический словарь русского языка содержит ряд специфических слов, относящихся к областям деятельности, автоматизируемым с помощью системы программ «1С:Предприятие».
  • Стандартно в состав поставляемых словарей включены словарные базы и словари тезауруса и синонимов русского, украинского и английского языков, которые предоставлены компанией «Информатик».
  • Поиск можно осуществлять с использованием подстановочных символов («*»), а также с указанием поисковых операторов («И», «ИЛИ», «НЕ», «РЯДОМ») и спецсимволов.

Полнотекстовый поиск можно осуществлять в любой конфигурации на платформе 1С:Предприятие 8

Для того чтобы открыть окно управления полнотекстовым поиском необходимо выполнить следующее:

Обычное приложение — пункт меню Операции — Управление полнотекстовым поиском.

Управляемое приложение — пункт меню Главное меню — Все функции — Стандартные — Управление полнотекстовым поиском.

  • Обновить индекс – Создание индекса/Обновление индекса;
  • Очистить индекс – обнуление индекса(рекомендуется после обновления всех данных);
  • пункт Разрешить слияние индексов – отвечает за слияние основного и дополнительного индекса.

Полнотекстовый поиск осуществляется при помощи полнотекстового индекса. При отсутствии индекса полнотекстовый поиск как таковой не возможен. Для того чтобы поиск имел результат, все необходимые данные должны быть включены в полнотекстовый индекс. Если пользователем введены в базу новые данные, их следует включить в рассматриваемый индекс, иначе они не будут участвовать в поиске. Чтобы этого избежать, необходимо обновлять полнотекстовый индекс. При обновлении система анализирует только определенные типы данных: Строка, Данные ссылочного типа (ссылки на документы, справочники),Число, Дата, ХранилищеЗначения. Если пользователь не имеет прав доступа к определенной информации, то он не сможет увидеть ее в результатах поиска. Следует также помнить и о том, что в свойствах объектов, по которым будет происходить поиск должно быть установлено значение Полнотекстовый Поиск – Использовать, которое задано по умолчанию.

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

Рассмотрим более подробно полнотекстовый индекс, который состоит из двух частей (индексов): основного индекса и дополнительного. Высокая скорость поиска данных обеспечивается за счет основного индекса, но обновление его происходит относительно медленно, в зависимости от объема данных. Дополнительный индекс ему противоположен. Данные добавляются в него намного быстрее, но поиск осуществляется медленнее. Система осуществляет поиск одновременно в обоих индексах. Большая часть данных находится в основном индексе, а данные добавляемые в систему попадают в дополнительный индекс. Пока объем данных в дополнительном индексе небольшой, поиск по нему происходит относительно быстро. В тот момент, когда нагрузка на систему невелика, происходит операция слияния индексов, в результате чего дополнительный индекс очищается, а все данные помещаются в основной индекс. Слияние индексов предпочтительнее выполнять в тот момент времени, когда нагрузка на систему минимальна. С этой целью можно создавать регламентированные задания и задания по расписанию.

Специальные операторы, допустимые при задании поискового выражения

Механизм полнотекстового поиска допускает написание части символов русского слова одноклавишными латинскими символами. Результат поиска при этом не измениться.

Два оператора РЯДОМ

  • упрощенный. На расстоянии 8 слов друг от друга
  • РЯДОМ/n – поиск данных в одном реквизите на расстоянии n-1 слов между ними.

Знак указывает в каком направлении от первого слова будет поиск второго. (+ — после, — до)

Групповой символ «*» может использоваться только в качестве замены конца слова

Оператор нечеткости «#». Если неизвестно точное написание названия, имени.

Программными средствами и средствами 1с: программирование.

Оператор синонимов «!». Позволяет найти слово и его синонимы

Как программно обновить индекс полнотекстового поиска?

Код 1C v 8.х Процедура ОбновлениеИндексы() Экспорт
ПолнотекстовыйПоиск.ОбновитьИндекс();
КонецПроцедуры

Пример полнотекстового поиска данных

Определение переменной СписокПоиска

Код 1C v 8.х Перем СписокПоиска;

Кроме этого в процедуре обработки события ПриОткрыии формы определим, что эта переменная будет содержать список полнотекстового поиска, с помощью которого мы и будем осуществлять поиск в данных

Код 1C v 8.х Процедура ПриОткрытии()
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок();
КонецПроцедуры

Теперь для события нажатия на кнопку Найти напишем код, который позволит нам выполнять поиск в соответствии с тем выражением, которое задано в поле ПоисковоеВыражение

Код 1C v 8.х Процедура НайтиНажатие(Элемент)
СписокПоиска.СтрокаПоиска = ПоисковоеВыражение;
Попытка
СписокПоиска.ПерваяЧасть();
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
Если СписокПоиска.ПолноеКоличество() = 0 Тогда
ЭлементыФормы.СообщениеОРезультате.Значение = «Не найдено»;
ЭлементыФормы.РезультатПоиска.УстановитьТекст(«»);

Иначе
ВывестиРезультатПоиска();
КонецЕсли;
КонецПроцедуры

Сначала в этой процедуре мы устанавливаем поисковое выражение, введенное пользователем, в качестве строки поиска для полнотекстового поиска. Затем выполняем метод ПерваяЧасть(), который собственно запускает полнотекстовый поиск и возвращает первую порцию результатов. По умолчанию порция содержит 20 элементов. После этого мы анализируем количество элементов в списке поиска. Если он не содержит ни одного элемента, то мы выводим в форму соответствующее сообщение. В противном случае вызывается процедура ВывестиРезультатПоиска(), которая отображает полученные результаты пользователю.

Создадим в модуле формы процедуру с таким именем и напишем в ней код,

Код 1C v 8.х Процедура ВывестиРезультатПоиска()
ЭлементыФормы.СообщениеОРезультате.Значение = «Показаны » + Строка(СписокПоиска.НачальнаяПозиция() + 1) + » — » + Строка(СписокПоиска.НачальнаяПозиция() +СписокПоиска.Количество()) + » из » + СписокПоиска.ПолноеКоличество();
Результат = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст);
ЭлементыФормы.РезультатПоиска.УстановитьТекст(Результат);
ДоступностьКнопок();
КонецПроцедуры

Действия, выполняемые в этой процедуре, просты. Сначала мы формируем сообщение о том, какие элементы отображены и сколько всего элементов найдено. Затем получаем результат полнотекстового поиска в виде HTML-текста и выводим этот текст в поле HTML-документа, расположенное в форме.

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

Код 1C v 8.х Процедура ДоступностьКнопок()
ЭлементыФормы.СледующаяПорция.Доступность = (СписокПоиска.ПолноеКоличество() — СписокПоиска.НачальнаяПозиция()) > СписокПоиска.Количество();
ЭлементыФормы.ПредыдущаяПорция.Доступность = (СписокПоиска.НачальнаяПозиция() > 0);
КонецПроцедуры

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

Код 1C v 8.х Процедура ПредыдущаяПорцияНажатие(Элемент)
СписокПоиска.ПредыдущаяЧасть();
ВывестиРезультатПоиска();
КонецПроцедуры
Процедура СледующаяПорцияНажатие(Элемент)
СписокПоиска.СледующаяЧасть();
ВывестиРезультатПоиска();
КонецПроцедуры

Заключительным «штрихом» будет создание обработчика события onclick поля HTML-документа, расположенного в форме. Дело в том, что результат полнотекстового поиска, представленный в виде HTML-текста, содержит гиперссылки на номера элементов списка поиска. И нам хотелось бы, чтобы при переходе пользователя на эту ссылку система открывала бы форму того объекта, который содержится в этом элементе списка. Для этого мы будем перехватывать событие onclick HTML-документа, содержащегося в поле HTML-документа, получать номер элемента списка из гиперссылки и открывать форму соответствующего объекта. Текст обработчика события onclick поля HTML-документа представлен в коде

Код 1C v 8.х Процедура РезультатПоискаonclick(Элемент, pEvtObj)
htmlElement = pEvtObj.srcElement;
// Проверить идентификатор элемента
Если (htmlElement.id = «FullTextSearchListItem») Тогда
// Получить имя файла (номер строки списка поиска),
// содержащегося в гиперссылке
НомерВСписке = Число(htmlElement.nameProp);
// Получить строку списка поиска по номеру
ВыбраннаяСтрока = СписокПоиска;
// Открыть форму найденного объекта
ОткрытьЗначение(ВыбраннаяСтрока.Значение);

1С Предприятие поддерживает полнотекстовый поиск. Это позволяет легко искать в информационной базе практически любую информацию, которая в ней содержится, даже без указания чётких критериев для поиска.

Механизм полнотекстового поиска в 1С состоит из двух составных частей:

  • Полнотекстовый индекс;
  • Средства выполнения поиска.
Полнотекстовый индекс

Полнотекстовый индекс представляет собой, по сути, служебную базу данных, в которую заносится информация об объектах информационной базы. Средства выполнения полнотекстового поиска получают данные из него.

Будет ли информация о том или ином объекте входить в полнотекстовый индекс, определяется его свойством «Полнотекстовый поиск» (значение по умолчанию «Использовать») в конфигураторе.

Если установлено значение «Использовать», объект информационной базы будет участвовать в полнотекстовом поиске.

Полнотекстовый индекс создаётся только один раз. После этого он только периодически обновляется.

Частота обновления определяется исходя из интенсивности работы с информационной базой. Чем чаще в ней происходят изменения (добавление данных в справочники, создание и проведение документов и т.д.), тем чаще нужно обновлять полнотекстовый индекс. Иначе поиск будет предоставлять пользователю неактуальные данные.

Управлять полнотекстовым индексом можно из режима» 1С Предприятие» или программно.

В режиме «1С Предприятие»

В режиме «1С Предприятие» доступ к требуемому функционалу осуществляется с помощью меню «Все функции» — «Стандартные» — «Управление полнотекстовым поиском».

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

Кнопка «Настройка» открывает диалоговое окно включения и отключения полнотекстового поиска как такового.

В программном коде

Для работы с полнотекстовым поиском в программном коде существует специальный объект «Полнотекстовый поиск».

Обновление полнотекстового индекса возможно в двух режимах:

  • Полное;
  • Частичное.

Первый режим используется для обновления полнотекстового индекса целиком.

Если

1С (Код)

1 2 3 Если Не ПолнотекстовыйПоиск.ИндексАктуален() Тогда ПолнотекстовыйПоиск.ОбновитьИндекс(Истина); КонецЕсли;

Для этого в методе ОбновитьИндекс в первом параметре передаётся значение «Истина» (второй имеет значение по умолчанию «Ложь»).

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

Поэтому его применяют, как правило, периодически в рамках регламентного задания, которое лучше всего назначить на нерабочее время.

Второй режим применяется для быстрого обновления, так как данные обновляются отдельными порциями, максимальный размер которых составляет 10 000 записей. При этом за один раз обрабатывается только одна порция. То есть, если нужно обновить 25 000 записей, быстрое обновление придётся выполнить три раза.

Реализация частичного обновления полностью аналогична полному за исключение параметров передаваемых методу ОбновитьИндекс.

1С (Код)

1 2 3 Если Не ПолнотекстовыйПоиск.ИндексАктуален() Тогда ПолнотекстовыйПоиск.ОбновитьИндекс(,Истина); КонецЕсли;

При быстром обновлении значение первого параметра остаётся по умолчанию («Ложь»), а во втором параметре передаётся наоборот «Истина». Тогда слияния не произойдет, и данные будут обновляться каждый раз частично.

Очистка индекса производится при помощи метода ОчиститьИндекс. Он не принимает никаких параметров.

1С (Код)

1 ПолнотекстовыйПоиск.ОчиститьИндекс();

Важно:

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

1С (Код)

1 2 3 Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска()=РежимПолнотекстовогоПоиска.Разрешить Тогда //Делаем что-то КонецЕсли;

Включение и отключение полнотекстового поиска производится при помощи метода УстановитьРежимПолнотекстовогоПоиска. Он принимает единственный параметр типа РежимПолнотекстовогоПоиска.

Для включения полнотекстового поиска передаём РежимПолнотекстовогоПоиска.Разрешить

1С (Код)

1 ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Разрешить);

Для отключения РежимПолнотекстовогоПоиска.Запретить

1С (Код)

1 ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Запретить);
Реализация полнотекстового поиска

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

Реализовать его можно при помощи такого объекта конфигурации как «Отчёт».

Для этого в режиме конфигуратор создаём новый «Отчёт» и сразу же создаём для него основную форму.

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

Внешний вид отчёта по поиску

Для работы с полнотекстовым поиском нам потребуются:

  • Три команды:
    • Поиск – Осуществляет непосредственно поиск данных;
    • Предыдущая – переход на предыдущую страницу поисковой выдачи;
    • Следующая – переход на предыдущую страницу поисковой выдачи.
  • Реквизиты:
    • Поисковое выражение – строка поиска;
    • РезультатПоиска – (строка) отображает результаты поиска. Для отображения сразу устанавливаем в свойстве «Вид» значение «Поле HTML документа»;
    • РезультатыПоиска – (список значений) Вспомогательный реквизит для хранения информации о найденных объектах информационной базы;
    • СообщенииеОРезультате – (строка) выводит сообщение о результатах поиска.;
    • ТекущаяПозиция – (число) вспомогательный реквизит, хранит условный номер страницы результатов поиска.

Поиск может выдать результат достаточно большого объёма. Поэтому сразу предусматриваем условное разделение их на страницы для удобства работы. Собственно для этого и созданы команды «Предыдущая», «Следующая» и реквизит «Текущая позиция».

Для работы формы поиска на форме необходимо разместить только все три команды, а также реквизиты «Поисковое выражение», «РезультатПоиска» и «СообщенииеОРезультате».

Всё вышеперечисленные элементы можно располагать по своему усмотрению. Возможный вариант их расположения:

Этот же вариант в работе уже был показан в самом начале статьи. Однако для того чтобы придать созданной форме отчёта работоспособность разработать её внешний вид недостаточно.

Нужно реализовать программную логику работы с полнотекстовым поиском.

Основной механизм полнотекстового поиска и обработки его результатов

Для начала реализуем работу с поиском и его выдачей на стороне сервера.

Получаем результаты поиска по введённой поисковой фразе и выбираем из них соответствующую часть.

1С (Код)

1 2 3 4 5 6 7 8 9 СписокПоиска=ПолнотекстовыйПоиск.СоздатьСписок(); СписокПоиска.СтрокаПоиска=ПоисковоеВыражение; Если Направление=0 Тогда СписокПоиска.ПерваяЧасть(); ИначеЕсли Направление=-1 Тогда СписокПоиска.ПредыдущаяЧасть(ТекущаяПозиция); ИначеЕсли Направление=1 Тогда СписокПоиска.СледующаяЧасть(ТекущаяПозиция); КонецЕсли;

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

  • Значение «0» – выбираем самую первую часть результатов поиска;
  • Значение «1» – выбираем следующую часть (страницу) результатов поиска относительно текущей позиции;
  • Значение «-1» – выбираем предыдующую часть (страницу) результатов поиска относительно текущей позиции.

Далее получаем информацию о каждом найденном объекте информационной базы и добавляем её в список РезультатыПоиска.

При этом краткую информацию о них отображаем в виде HTML в тестовом поле РезультатПоиска. Это именно то, что будет видеть пользователь, если был найден хотя бы один объект (иначе это текстовое поле останется пустым).

1С (Код)

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

Сохраняем текущую позицию (условный номер текущей части (страницы) и общее количество частей (страниц) в поисковой выдаче.

1С (Код)

1 2 ТекущаяПозиция=СписокПоиска.НачальнаяПозиция(); ПолноеКоличество=СписокПоиска.ПолноеКоличество();

В завершение обработки результатов поиска отображаем информацию о результатах поиска и устанавливаем доступность команд «Предыдущая» и «Следующая».

1С (Код)

Полностью процедура поиска на стороне сервера выглядит следующим образом:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 &НаСервере Процедура ИскатьСервер(Направление) Экспорт СписокПоиска=ПолнотекстовыйПоиск.СоздатьСписок(); СписокПоиска.СтрокаПоиска=ПоисковоеВыражение; Если Направление=0 Тогда СписокПоиска.ПерваяЧасть(); ИначеЕсли Направление=-1 Тогда СписокПоиска.ПредыдущаяЧасть(ТекущаяПозиция); ИначеЕсли Направление=1 Тогда СписокПоиска.СледующаяЧасть(ТекущаяПозиция); КонецЕсли; РезультатыПоиска.Очистить(); Для каждого Результат Из СписокПоиска Цикл РезультатыПоиска.Добавить(Результат.Значение); КонецЦикла; РезультатПоиска=СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); ТекущаяПозиция=СписокПоиска.НачальнаяПозиция(); ПолноеКоличество=СписокПоиска.ПолноеКоличество(); Если СписокПоиска.Количество()<>0 Тогда СообщениеОРезультате=»Показаны «+Строка(ТекущаяПозиция+1)+»-«+Строка(ТекущаяПозиция+СписокПоиска.Количество())+» из «+ Строка(ПолноеКоличество); Элементы.Следующая.Доступность=(ПолноеКоличество-ТекущаяПозиция)>СписокПоиска.Количество(); Элементы.Предыдущая.Доступность=ТекущаяПозиция>0; Иначе СообщениеОРезультате=»По данному запросу ничего не найдено!»; Элементы.Следующая.Доступность=Ложь; Элементы.Предыдущая.Доступность=Ложь; КонецЕсли; КонецПроцедуры

Приведённая процедура является основой выполнения полнотекстового поиска и представляет наиболее сложный его компонент.

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

1С (Код)

1 2 3 4 5 6 7 8 &НаКлиенте Процедура Искать (Направление) Если ПустаяСтрока(ПоисковоеВыражение) Тогда Предупреждение(«Не задан поисковый запрос!»); Возврат; КонецЕсли; ИскатьСервер(Направление); КонецПроцедуры
Реализация клиентских команд и доступа к найденным объектам

Теперь, когда механизм поиска готов, можно без труда реализовать работу всех трёх ранее созданных команд на форме отчёта.

1С (Код)

Смысл параметров передаваемых процедуре Искать подробно описан в предыдущем подразделе.

Для того чтобы получить доступ найденным объектам необходимо получить из результатов поиска ссылку на тот или иной конкретный объект и открыть его по этой ссылке. Лучше всего это сделать при обработке события ПриНажатии элемента формы РезультатПоиска.

1С (Код)

1 2 3 4 5 6 7 8 9 10 &НаКлиенте Процедура РезультатПоискаПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) ЭлементHTML=ДанныеСобытия.Event.srcElement; Если ЭлементHTML.id=»FullTextSearchListItem» Тогда НомерВСписке=Число(ЭлементHTML.nameProp); ВыбраннаяСтрока=РезультатыПоиска.Значение; ОткрытьЗначение(ВыбраннаяСтрока); СтандартнаяОбработка=Ложь; КонецЕсли; КонецПроцедуры

Теперь при клике мышью на любом из найденных объектов, отображаемых в списке, этот объект будет открыт для просмотра и редактирования.

Варианты обновления полнотекстового индекса

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

Как уже было сказано выше, возможны два варианта обновления полнотекстового индекса:

  • Вручную (через меню «Все функции»);
  • При помощи программного кода.

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

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

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

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

Ручное обновление незаменимо при работе с информационной базой в файловом режиме в одно лицо или в составе небольшой группы.

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

Однако требует определённой дисциплины, чтобы обновления выполнялись своевременно.

В программе «1С:Бухгалтерия 8» (ред. 3.0) реализован механизм полнотекстового поиска во всех полях любого справочника, документа, списка и др.:

  1. Сочетание клавиш «Ctrl и F» автоматически устанавливает курсор в поле «Поиск». Начните набирать текст и поиск будет запущен автоматически.
  2. По кнопке со значком лупы (или сочетанием клавиш «Alt и F») можно выбрать «Расширенный поиск» и установить параметры поиска (рис. 1).

Рис. 1

Если работа поиска по каким-то причинам нарушена, либо осуществляется медленно, рекомендуется очистить индексы и затем обновить их (рис. 2). Эти действия доступны только пользователям с правами «Администратор».

Внимание! При работе через облачные технологии операции по очистке и обновлению индексов выполняются автоматически.

  1. Раздел: Администрирование – Общие настройки.
  2. Раскройте подраздел «Полнотекстовый поиск данных» и перейдите по ссылке «Настроить».
  3. Нажмите кнопку «Очистить индекс». Когда операция выполнится, станет доступной кнопка «Обновить индекс», нажмите ее. Дождитесь выполнения операции и закройте форму.

Рис. 2

Для автоматического обновления индексов, быстрой и корректной работы поиска должно быть настроено выполнение двух регламентных заданий – «Обновление индекса ППД» и «Слияние индекса ППД». Обычно эти регламентные задания настроены по умолчанию и выполняются в программе ежедневно по расписанию в автоматическом режиме (например, каждый день с 8.00 каждый час).

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

  1. Раздел: Администрирование – Обслуживание.
  2. Раскройте подраздел «Регламентные операции» и перейдите по ссылке «Регламентные и фоновые задания».
  3. В сформированном списке установите флажки у заданий «Обновление индекса ППД» и Слияние индекса ППД».
  4. Поочередно двойным щелчком мыши откройте каждое задание, перейдите по ссылке «Расписание».
  5. В форме «Расписание» на закладке «Общее» указываются дата начала и завершения задания и режим повтора.
  6. На закладке «Дневное» укажите время начала задания и время повтора.
  7. На закладке «Недельное» и «Месячное» проверьте установку флажков по дням недели и по месяцам.
  8. Кнопка «ОК», затем кнопка «Записать и закрыть».

Рис. 3

Запросом можно попробовать через ПОДОБНО разделив слова %

но лучше использовать полнотекстовый поиск:

Код 1C v 8.3 Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() <> РежимПолнотекстовогоПоиска.Разрешить Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр(«ru = ‘Использование полнотекстового поиска не разрешено. Вы можете включить его в диалоге «»Управление полнотекстовым поиском»»‘», «ru»);
Сообщение.Сообщить();
Возврат;
КонецЕсли;
тчРезультата.Очистить();
текдок = Новый ТекстовыйДокумент;
текдок.УстановитьТекст(ТестПоиска);
Для Ном=1 по текдок.КоличествоСтрок() цикл
Стр = СокрЛП(текдок.ПолучитьСтроку(Ном));
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(Стр);
СписокПоиска.ПолучатьОписание = Истина;
СписокПоиска.РазмерПорции = 5;
СписокПоиска.ПорогНечеткости = ПорогНечеткости;
МассивОтбор = Новый Массив();
МассивОтбор.Добавить(Метаданные.Справочники.Контрагенты);
//МассивОтбор.Добавить(Метаданные.Документы.КассовыйЧек);
СписокПоиска.ОбластьПоиска = МассивОтбор;
СписокПоиска.ПерваяЧасть(); // Выдает по 5 результатов — РазмерПорции
// Если нужно листать
// СписокПоиска.ПредыдущаяЧасть(ТекущаяПозиция);
// СписокПоиска.СледующаяЧасть(ТекущаяПозиция);
Для каждого Результат Из СписокПоиска Цикл
нСтр=тчРезультата.Добавить();
нСтр.ТекстПоиска=Стр;
нСтр.Контрагент=Результат.Значение;
КонецЦикла;
КонецЦикла;

Вот подробнее: Полнотекстовый Поиск — пример поиска контрагентов в базе

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *