Администрирование · 12 мин
Полнотекстовый поиск в 1С: как работает и как его настроить
Как работает полнотекстовый поиск в 1С: индексация, обновление индекса, настройка по объектам, операторы запроса, типичные ошибки и способы ускорить поиск.
Полнотекстовый поиск в 1С — это встроенный механизм платформы, который позволяет искать документы, элементы справочников и записи по произвольным словам и фразам, а не только по точному совпадению в конкретном поле. Он работает иначе, чем обычный поиск по подстроке: вместо перебора записей «на лету» система использует заранее построенный индекс, поэтому отвечает быстро даже в базах с миллионами объектов.
Ключевая особенность механизма — разделение на два процесса: индексирование (разбор данных и построение индекса) и собственно поиск (выборка по индексу). Из-за этого появляются типичные вопросы администраторов: почему новый документ не находится, почему поиск «тормозит» после обновления конфигурации и как ограничить круг индексируемых объектов.
Механизм доступен как в файловом, так и в клиент-серверном варианте работы, но администрируется по-разному. Ниже разобраны принцип работы, настройка, обновление индекса, синтаксис поисковых запросов и типичные проблемы с их решением.
Как устроен механизм полнотекстового поиска
При индексировании платформа проходит по объектам, разрешённым для поиска, извлекает текстовые данные (строковые реквизиты, наименования, содержимое текстовых полей, данные присоединённых файлов при соответствующей настройке) и разбивает их на отдельные слова. Для каждого слова строится связь с объектом, в котором оно встречается. Результат сохраняется в виде индекса — специальной структуры данных, хранящейся внутри информационной базы.
При поиске платформа не читает сами документы, а обращается к индексу: находит слова из запроса, определяет список объектов и ранжирует результат. Именно поэтому поиск выполняется быстро, но показывает только те данные, которые успели попасть в индекс. Если документ создан после последнего обновления индекса, он не будет найден до следующего обновления.
Индекс занимает дополнительное место в базе — ориентировочно заметную долю от объёма индексируемых текстовых данных. На больших базах это нужно учитывать при планировании дискового пространства и времени регламентных операций: полное перестроение индекса — ресурсоёмкая операция, нагружающая дисковую подсистему и процессор.
Включение поиска и настройка состава объектов
В типовых конфигурациях полнотекстовый поиск обычно уже включён, но в самописных решениях и после переноса баз его состояние стоит проверить. Управление выполняется в режиме «1С:Предприятие» через раздел администрирования (в типовых — «Настройка полнотекстового поиска») либо программно через объект ПолнотекстовыйПоиск.
Какие объекты попадают в индекс, определяется на уровне метаданных: в конфигураторе у каждого объекта есть свойство «Полнотекстовый поиск» со значениями «Использовать» и «Не использовать». Отдельные реквизиты также можно исключить из индексации. Разумное сокращение состава — главный способ уменьшить размер индекса и время его обновления: например, нет смысла индексировать служебные журналы или технические регистры сведений.
- 1Откройте настройку полнотекстового поиска в разделе администрирования
- 2Убедитесь, что поиск разрешён, и при необходимости включите его
- 3Выполните полное обновление индекса и дождитесь завершения
- 4Проверьте поиск по заведомо существующему слову из документа
- 5Настройте расписание автоматического обновления индекса
Для программного управления используются методы объекта ПолнотекстовыйПоиск: УстановитьРазрешение, ОбновитьИндекс (с параметром полного или частичного обновления), ПолучитьРазрешение. Это удобно для регламентных заданий и сценариев обслуживания.
Обновление индекса: полное и частичное
Платформа поддерживает два режима обновления. Полное обновление перестраивает индекс с нуля — оно требуется после первого включения поиска, после изменения состава индексируемых объектов и в ряде аварийных ситуаций. Частичное (инкрементальное) обновление добавляет в индекс только изменённые с прошлого раза данные и выполняется значительно быстрее.
На практике схема обслуживания выглядит так: полное обновление — однократно или редко, инкрементальное — по расписанию, например каждые 15–60 минут или ночью, в зависимости от того, насколько критична свежесть результатов. Чем чаще обновление, тем актуальнее поиск, но тем выше фоновая нагрузка на сервер.
Как выбрать режим обновления
В клиент-серверном варианте обновление индекса обычно оформляют регламентным заданием, чтобы оно выполнялось на сервере без участия пользователей. В файловом варианте обновление может запускаться при работе пользователя с соответствующими правами — это стоит учитывать, чтобы не нагружать базу в часы пик.
Синтаксис поисковых запросов
Полнотекстовый поиск понимает не только отдельные слова, но и специальные операторы. Базовые правила: несколько слов через пробел ищутся по логике «И» (объект должен содержать все слова), фраза в кавычках ищется как точное сочетание, символ выполняет поиск по маске (например, наклад найдёт «накладная», «накладную»), оператор | задаёт «ИЛИ», а ! перед словом исключает объекты с этим словом.
Важно понимать ограничение: поиск работает по целым словам и их формам с учётом морфологии русского языка, но не ищет произвольную подстроку внутри слова без маски. Запрос ладн ничего не найдёт, а ладн* — найдёт. Для поиска по фрагментам номеров и артикулов маска обязательна.
// Примеры поисковых запросов в строке полнотекстового поиска:
// счет накладная — оба слова в любом месте объекта
// "счет-фактура" — точная фраза
// реализац* — все формы: реализация, реализации...
// договор | контракт — хотя бы одно из слов
// поставка !возврат — есть "поставка", нет "возврат"Результаты поиска выводятся с подсветкой найденных слов и ограничиваются правами доступа: пользователь увидит только те объекты, на просмотр которых у него есть права. Это важно с точки зрения безопасности — индекс не является способом обхода разграничения доступа.
Типичные проблемы и их диагностика
Самая частая жалоба — «поиск не находит то, что точно есть». Причины почти всегда одни и те же: индекс устарел (данные созданы после последнего обновления), объект или реквизит исключён из индексирования в метаданных, либо запрос составлен без учёта правил синтаксиса. Проверку начинайте с даты последнего обновления индекса — она отображается в форме настройки поиска.
Вторая группа проблем — производительность. Если обновление индекса идёт часами, а база «подтормаживает» во время него, типичные причины — избыточный состав индексируемых объектов, индексация больших присоединённых файлов и запуск обновления в рабочее время. Лечится сокращением состава, переносом регламентных операций на ночь и, при необходимости, отказом от индексации файлов.
Как проверить результат
Дата свежая, соответствует расписанию регламентного задания
Дата старая или пустая — обновление не выполняется
Документ находится, слова подсвечены
Не находится — объект исключён из индексации или индекс повреждён
Не находится до следующего обновления — это норма
Если не находится и после обновления — проверяйте метаданные
Укладывается в отведённое окно обслуживания
Растёт от недели к неделе — пересмотрите состав индексируемых данных
Ограничения механизма и альтернативы
Полнотекстовый поиск не заменяет аналитические отборы и отчёты: он возвращает список объектов, но не умеет группировать, суммировать и строить выборки по условиям. Для задач вида «все документы контрагента за период» нужны отчёты и динамические списки, а не полнотекстовый поиск.
Также учитывайте, что поиск по данным присоединённых файлов (PDF, Word, сканы) требует отдельной настройки извлечения текста и работает только для форматов, из которых текст технически можно извлечь. Сканированные документы без распознавания текста в индекс не попадут — для них нужен внешний OCR-инструмент.
Чем искать в разных ситуациях
Поиск по словам и фразам во всех текстах сразу. Ограничение: зависит от свежести индекса, не строит отборы по условиям
Быстрый поиск в текущем списке по конкретной колонке. Ограничение: работает только внутри открытого списка
Отборы по любым условиям, группировки, итоги. Ограничение: нужно знать структуру данных и параметры отбора
Находит все места использования конкретного элемента. Ограничение: ищет ссылки, а не текст
Практические рекомендации по эксплуатации
Начните с аудита состава индексируемых объектов: оставьте документы, справочники и регистры, по которым пользователи реально ищут, и отключите служебные структуры. Это разово потребует анализа, но постоянно экономит время обновления и место в базе.
Настройте расписание обновления под ритм работы компании: для активно меняющихся баз — каждые 15–30 минут инкрементально, для архивных — раз в сутки ночью. Контролируйте дату последнего обновления и длительность операции — рост длительности сигнализирует о раздувании индекса.
Обучите пользователей базовому синтаксису: кавычки для фраз, звёздочка для масок, восклицательный знак для исключений. Большинство жалоб «поиск не работает» на практике оказываются неправильно составленным запросом, и короткая памятка снимает основную часть обращений.
Что важно запомнить
Полнотекстовый поиск работает по индексу, а не по живым данным: свежесть результатов зависит от расписания обновления. Сокращайте состав индексируемых объектов, используйте инкрементальное обновление по расписанию и маски в запросах — это решает большинство практических проблем.
Частые вопросы
Почему полнотекстовый поиск не находит документ, созданный сегодня?
Поиск работает по индексу, который обновляется по расписанию, а не в реальном времени. Документ появится в результатах после ближайшего обновления индекса. Если срочно нужно найти объект, запустите обновление вручную из настройки полнотекстового поиска.
Можно ли искать по содержимому прикреплённых файлов?
Да, если в настройках включено извлечение текста из присоединённых файлов. Поиск сработает для форматов с текстовым слоем (Word, PDF с текстом). Сканированные изображения без распознавания текста индексироваться не будут.
Полнотекстовый поиск замедляет работу базы?
Сам поиск по готовому индексу выполняется быстро и почти не нагружает систему. Заметную нагрузку создаёт обновление индекса, особенно полное. Поэтому его планируют на нерабочее время и сокращают состав индексируемых объектов.
Как искать по части номера или артикула?
Используйте маску со звёздочкой, например 123 или АБ-123*. Без маски поиск работает по целым словам, и фрагмент внутри длинного номера найден не будет.
Видит ли пользователь в результатах объекты, к которым у него нет доступа?
Нет. Результаты полнотекстового поиска фильтруются с учётом прав доступа: пользователь видит только те объекты, которые ему разрешено просматривать обычным способом.
Что делать, если поиск находит давно удалённые объекты?
Это признак рассинхронизации индекса. Выполните полное перестроение индекса в нерабочее время — после него устаревшие записи исчезнут из результатов.