Программы. Настройки. Диагностика. Интернет. Периферия. Советы

Механизм полнотекстового поиска (1Cv8). Механизм полнотекстового поиска (1Cv8) 1с 8 полнотекстовый поиск

Механизм полнотекстового поиска

Основные возможности полнотекстового поиска

  • поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ);
  • поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами);
  • возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости;
  • возможность указания области выполнения поиска по выбранным объектам метаданных;
  • представление результатов поиска в формате XML и HTML с выделением найденных слов;
  • полнотекстовое индексирование названий стандартных полей ("Код", "Наименование" и т.д.) на всех языках конфигурации;
  • выполнение поиска с учетом синонимов русского, английского и украинского языков;
  • морфологический словарь русского языка содержит ряд специфических слов, относящихся к областям деятельности, автоматизируемым с помощью системы программ 1С:Предприятие;
  • возможность использования дополнительных словарей полнотекстового поиска;
  • в состав поставляемых словарей включены словарные базы и словари тезауруса и синонимов русского, украинского и английского языков, предоставленные компанией "Информатик".

Полнотекстовый поиск в базе данных

Механизм полнотекстового поиска в данных системы 1С:Предприятие 8 позволяет осуществлять поиск в базе данных с указанием поисковых операторов (И, ИЛИ, НЕ, РЯДОМ и др.).

Механизм полнотекстового поиска основан на использовании двух составляющих:

  • полнотекстового индекса, который создается для текущей базы данных и затем периодически, по мере необходимости, обновляется;
  • средств выполнения полнотекстового поиска.

Создание и обновление полнотекстового индекса может быть выполнено интерактивно, в режиме 1С:Предприятие 8, или программно, средствами встроенного языка. Ниже приведен диалог управления полнотекстовым индексированием в режиме 1С:Предприятие:

Для выполнения поиска данных в базе данных может использоваться, например, обработка Поиск данных, представленная ниже.

В представленном примере найдены документы, реквизиты которых содержат значения, начинающиеся на "Компл" и "вент" - контрагент "Комплетк ТД" и реквизиты, содержащие различные формы слова "вентилятор".

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

Полнотекстовый поиск в справочной системе

В справочной системе 1С:Предприятия 8 также реализован полнотекстовый поиск, позволяющий использовать поисковые операторы И, ИЛИ, НЕ, РЯДОМ и др.. При этом найденные слова выделяются.

Программный интерфейс

Используются следующие прикладные объекты:

  • МенеджерПолнотекстовогоПоиска
  • СписокПолнотекстовогоПоиска
  • ЭлементСпискаПолнотекстовогоПоиска

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

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

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

Результатом поиска является ЭлементСпискаПолнотекстовогоПоиска.

Операторы строки поиска

В строке ввода допускается использование следующих поисковых операторов:

И (AND или #) - поиск данных, содержащих все слова; пример: "запись И документ" - в реквизитах должны быть и "проведение" и "документ" (с учетом морфологии);

ИЛИ (OR или | или,) - поиск хотя бы одного слова из перечисленных; пример: "запись ИЛИ документ" - в реквизитах должно быть хотя бы одно из слов "запись" или "документ";

НЕ (NOT или ~) - поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: "закрытие НЕ месяц" - будут найдены все, содержащие "закрытие", но не содержащие слова "месяц". Использование "~" в начале строки не допускается;

РЯДОМ/n (NEAR/[+/-]n) - поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на расстоянии n слов между словами.

Знак указывает, в каком направлении от первого слова будет искаться второе слово ("+" – после первого; "-" – до первого слова).

Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга.

Порядок слов не имеет значения.

  • "фен РЯДОМ/3 воздух" - будут найдены данные, в которых "воздух" находится не более 3-х слов до или после "фен";
  • фен РЯДОМ/+3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов после "фен";
  • фен РЯДОМ/-3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов перед "фен".

РЯДОМ(NEAR) - упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: "проведение РЯДОМ документ";

"" (текст в кавычках) - поиск точной с учетом морфологии фразы, пример: "проведение документа" - эквивалентно: проведение /1 документа;

() - группировка слов (сколько угодно уровней вложенности); пример: "(проведение | выписка) # (счета, документа)";

* - поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: "доку*" - найдет "документ", "документировать", "документальный" и др.;

# - нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос "#Система" найдет "систама", "сивтема"; запрос "Система#2" найдет "ситтама", "сеттема";

Поиск с учетом синонимов русского, английского и украинского языков. "!" ставится перед соответствующим словом; пример: поиск "!красный кафель", найдет еще и "алый кафель" и "коралловый кафель".

Если не указано никаких операторов (слова набраны через пробел), то программа осуществляет поиск всех слов из запроса с использованием оператора И.

Примеры

СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок("", 20); СписокПоиска.ПолучатьОписание = Истина;

МассивМД = Новый Массив(); МассивМД.Добавить(Метаданные.Справочники.Товары); МассивМД.Добавить(Метаданные.Документы.КассовыйЧек);

СписокПоиска.ОбластьПоиска = МассивМД; СписокПоиска.СтрокаПоиска = ПолеВводаПоиска; СписокПоиска.РазмерПорции = РазмерПорции; СписокПоиска.ПерваяЧасть();

Если СписокПоиска.ПолноеКоличество() = 0 Тогда Если СписокПоиска.СлишкомМногоРезультатов() Тогда Предупреждение("Слишком много результатов, уточните запрос."); КонецЕсли; Возврат; КонецЕсли;

Колво = СписокПоиска.ПолноеКоличество();

СтрHTML = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); Сообщить(СтрHTML);

Для каждого индекс=0 По СписокПоиска.Количество-1 Цикл элемент = СписокПоиска.Получить(индекс); Сообщить(элемент.Представление); КонецЦикла;

Особенности

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

Например, в мультибазной системе нужно отсекать объекты других баз.

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

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

В данном окошке можно наблюдать три кнопки: Настройка - Включение/Отключение полнотекстового поиска;

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

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

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

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

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

Для начала создадим общий модуль и назовем его, к примеру ПП. В нем пропишем следующую процедуру:

Процедура ОбновлениеИндексы() Экспорт

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

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

Так же установим свойства как на рисунке.

Затем щелкнем правой кнопкой мыши на названии конфигурации в дереве конфигурации и выполним команду Открыть модуль управляемого приложения. Выберем в маленьком окошке сверху предопределенную функцию ПередНачаломРаботыСистемы и поместим в эту процедуру следующую строчку:

ОбновлениеПолнотекстовогоПоиска.ОбновлениеИндексы ();


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

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

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

Перейдем в режим Предприятия и выполним следующее: Запустим нашу обработку, которая в данном случае будет вызываться каждые 5 секунд и, в свою очередь вызывает метод “ВыполнитьОбработкуЗаданий()”. Данный метод проверяет настало ли время выполнять задания согласно их расписанию. Далее перейдем в пункт меню Операции – Константы – Настройка программы – вкладка Обмен Данными.

Определим пользовательский сеанс, который будет отвечать за выполнение и установим интервал опроса регламентных заданий. Работать в данном сеансе не рекомендуется, так как это может сказаться на производительности системы. Также на дисках ИТС имеется обработка “ЗапускРегламентныхЗаданий ”, которая принудительно запускает регламентные задания по выбору пользователя. Форма данной обработки выглядит следующим образом:

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

Чтобы начать работать с полнотекстовым поиском необходимо выполнить следующую команду: меню Сервис à Поиск данных .

После чего появится следующее окно:

Нажав на кнопку Настройки , появится поле с дополнительными настройками, такими как: Ограничение области поиска , Нечеткость , Размер Порции (в данном случае значение = 5, что означает вывод по пять результатов поиска на страницу). Параметр Нечеткость обозначает несовпадение части символов в поисковом запросе и полученной в ходе поиска информации. Нечеткость задается в процентном соотношении.

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

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

В клиент-серверном варианте планированием выполнения заданий занимается планировщик заданий.

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

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

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

Спасибо!

Совет1: Отключить полнотекстовый поиск*

Большинство бухгалтеров не знают о существовании данной функции и никогда ею не пользуются (Сервис - Поиск данных)

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

Механизм полнотекстового поиска в 1С по умолчанию включен. Чтобы отключить полнотекстовый поиск, нужно зайти Операции - Управление полнотекстовым поиском -Настройка и убрать признак «Разрешить полнотекстовый поиск »

Отключение механизма полнотекстового поиска осуществляется в монопольном режиме (никто не должен работать в программе, кроме вас)**

Отключение механизма полнотекстового поиска дает увеличение производительности до 10%.

Совет2: Пересчет итогов*

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

Итоги - это механизмы 1С для быстрого доступа к данным при формировании отчетов и выполнении различных вычислительных операций.

Для того, чтобы выполнить пересчет итогов требуется зайти в Операции - Управление итогами, установить дату по которую рассчитать итоги (начало текущего месяца) у раздела «Все регистры» и нажать кнопку «Выполнить»

Пересчет итогов осуществляется в монопольном режиме (никто не должен работать в программе, кроме вас)**

Пересчет итогов дает увеличение производительности до 10%.

Совет3: Отключить версионирование объектов***

Большинство бухгалтеров не знают о существовании данной функции и не используют ее.

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

Настройка версионирования осуществляется через Операции - Настройки программы -Версионирование. Если настройка не требуется, то нужно убрать признак «Использовать версионирование объектов».

Если настройка нужна для определенного перечня документов, то зайти в «Настройку версионирования объектов» и правой кнопкой мышки установить настройку «Версионировать» для нужных объектов**

Отключение версионирования дает увеличение производительности до 5%.

_________________________________________________________________

*Для конфигураций на базе «1С:Управление Производственным предприятием», «1С:Комплексная автоматизация», «1С: Бухгалтерия предприятия 2.0», «1С:Управление Торговлей 10.3»

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

***Для конфигураций на базе «1С:Управление Производственным предприятием», «1С:Комплексная автоматизация».

Далеко не каждый бухгалтер знает о таком полезном инструменте в 1С:Бухгалтерии 8, как полнотекстовый поиск. Механизм полнотекстового поиска позволяет найти текстовую информацию в любом месте конфигурации.

Полнотекстовый поиск осуществляется с помощью обработки «Поиск данных», которая находится в меню «Сервис»:

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

Пример 1. Предположим нам надо быстро найти документы поступления определенного товара, например сигарет «Мальборо».
Выбираем в меню «Сервис» пункт «Поиск данных». В открывшемся окне в верхнем поле вводим поисковый запрос «Мальборо» и нажимаем кнопку «Поиск»:


Пример 2. Наша организация арендует офис у бизнес-центра «Румянцева». Необходимо быстро найти в базе данных акт на аренду за март 2010 года. Составляем следующий поисковый запрос:


Вариант 3. Предположим при отгрузке товара мы оставляли в некоторых документах «Реализация товаров и услуг» следующий комментарий — «Отсрочка платежа». И нам потребовалось найти все документы отгруженные с отсрочкой. Составляем следующий поисковый запрос:

Можно осуществлять и более сложный поиск с использованием поисковых операторов (И,ИЛИ,НЕ,РЯДОМ).
Область поиска можно ограничивать конкретными объектами конфигурации (например документ «Поступление товаров и услуг»). Для этого надо нажать кнопку «настройка»:

Появится поле для выбора объекта конфигурации. Ставим галочку «Ограничить области поиска» и нажимаем кнопку «Выбрать объекты метаданных для поиска»:

Выбираем например документ «Поступление товаров и услуг».

Остается ввести поисковый запрос и осуществить поиск.

В нижней части обработки «Поиск данных» отражается актуальность индекса. Если Вы видите — «Индекс не актуален», нужно нажать кнопку «Обновить индекс».

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

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

  • Есть поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ 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);
// Получить строку списка поиска по номеру
ВыбраннаяСтрока = СписокПоиска[НомерВСписке];
// Открыть форму найденного объекта
ОткрытьЗначение(ВыбраннаяСтрока.Значение);
pEvtObj.returnValue = Ложь;
КонецЕсли;
КонецПроцедуры