К статье
Практический материал

Администрирование · 12 мин

Полнотекстовый поиск в 1С: как работает и как его настроить

Как работает полнотекстовый поиск в 1С: индексация, обновление индекса, настройка по объектам, операторы запроса, типичные ошибки и способы ускорить поиск.

Полнотекстовый поиск в 1С — это встроенный механизм платформы, который позволяет искать документы, элементы справочников и записи по произвольным словам и фразам, а не только по точному совпадению в конкретном поле. Он работает иначе, чем обычный поиск по подстроке: вместо перебора записей «на лету» система использует заранее построенный индекс, поэтому отвечает быстро даже в базах с миллионами объектов.

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

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

Как устроен механизм полнотекстового поиска

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

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

Индекс занимает дополнительное место в базе — ориентировочно заметную долю от объёма индексируемых текстовых данных. На больших базах это нужно учитывать при планировании дискового пространства и времени регламентных операций: полное перестроение индекса — ресурсоёмкая операция, нагружающая дисковую подсистему и процессор.

Включение поиска и настройка состава объектов

В типовых конфигурациях полнотекстовый поиск обычно уже включён, но в самописных решениях и после переноса баз его состояние стоит проверить. Управление выполняется в режиме «1С:Предприятие» через раздел администрирования (в типовых — «Настройка полнотекстового поиска») либо программно через объект ПолнотекстовыйПоиск.

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

Порядок включения и проверки
  1. 1
    Откройте настройку полнотекстового поиска в разделе администрирования
  2. 2
    Убедитесь, что поиск разрешён, и при необходимости включите его
  3. 3
    Выполните полное обновление индекса и дождитесь завершения
  4. 4
    Проверьте поиск по заведомо существующему слову из документа
  5. 5
    Настройте расписание автоматического обновления индекса

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

Обновление индекса: полное и частичное

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

На практике схема обслуживания выглядит так: полное обновление — однократно или редко, инкрементальное — по расписанию, например каждые 15–60 минут или ночью, в зависимости от того, насколько критична свежесть результатов. Чем чаще обновление, тем актуальнее поиск, но тем выше фоновая нагрузка на сервер.

Маршрут решения

Как выбрать режим обновления

Поиск только что включён или изменён состав индексируемых объектовВыполните полное обновление индекса в нерабочее время
Новые документы не находятся, но старые ищутсяЗапустите частичное обновление и настройте регламентное расписание
Поиск находит удалённые или переименованные объектыВыполните полное перестроение индекса — индекс рассинхронизирован
Обновление индекса занимает слишком много времениСократите состав индексируемых объектов и реквизитов в конфигураторе

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

Синтаксис поисковых запросов

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

Важно понимать ограничение: поиск работает по целым словам и их формам с учётом морфологии русского языка, но не ищет произвольную подстроку внутри слова без маски. Запрос ладн ничего не найдёт, а ладн* — найдёт. Для поиска по фрагментам номеров и артикулов маска обязательна.

1c
// Примеры поисковых запросов в строке полнотекстового поиска:
// счет накладная      — оба слова в любом месте объекта
// "счет-фактура"     — точная фраза
// реализац*           — все формы: реализация, реализации...
// договор | контракт  — хотя бы одно из слов
// поставка !возврат   — есть "поставка", нет "возврат"

Результаты поиска выводятся с подсветкой найденных слов и ограничиваются правами доступа: пользователь увидит только те объекты, на просмотр которых у него есть права. Это важно с точки зрения безопасности — индекс не является способом обхода разграничения доступа.

Типичные проблемы и их диагностика

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

Вторая группа проблем — производительность. Если обновление индекса идёт часами, а база «подтормаживает» во время него, типичные причины — избыточный состав индексируемых объектов, индексация больших присоединённых файлов и запуск обновления в рабочее время. Лечится сокращением состава, переносом регламентных операций на ночь и, при необходимости, отказом от индексации файлов.

Типичные ошибки
01
Не настроено регламентное обновление — пользователи не находят свежие документы и считают поиск сломанным
02
Индексируются все объекты подряд — индекс раздувается, обновление занимает часы и грузит сервер
03
Поиск подстроки без маски — запрос "123" не находит артикул "АБ-123-45", нужна маска со звёздочкой
04
Полное обновление по расписанию каждый день вместо инкрементального — лишняя нагрузка без выигрыша в качестве
05
Ожидание мгновенного результата после включения поиска — пока индекс не построен, поиск ничего не найдёт
Контрольные точки

Как проверить результат

Дата обновления индекса в настройках поиска
Норма

Дата свежая, соответствует расписанию регламентного задания

Тревожный признак

Дата старая или пустая — обновление не выполняется

Поиск по слову из документа, созданного до последнего обновления
Норма

Документ находится, слова подсвечены

Тревожный признак

Не находится — объект исключён из индексации или индекс повреждён

Поиск по документу, созданному после обновления
Норма

Не находится до следующего обновления — это норма

Тревожный признак

Если не находится и после обновления — проверяйте метаданные

Время выполнения регламентного обновления
Норма

Укладывается в отведённое окно обслуживания

Тревожный признак

Растёт от недели к неделе — пересмотрите состав индексируемых данных

Ограничения механизма и альтернативы

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

Также учитывайте, что поиск по данным присоединённых файлов (PDF, Word, сканы) требует отдельной настройки извлечения текста и работает только для форматов, из которых текст технически можно извлечь. Сканированные документы без распознавания текста в индекс не попадут — для них нужен внешний OCR-инструмент.

Чем искать в разных ситуациях

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

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

Поиск по подстроке в динамическом списке

Быстрый поиск в текущем списке по конкретной колонке. Ограничение: работает только внутри открытого списка

Отчёты на СКД

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

Поиск ссылок на объект

Находит все места использования конкретного элемента. Ограничение: ищет ссылки, а не текст

Практические рекомендации по эксплуатации

Начните с аудита состава индексируемых объектов: оставьте документы, справочники и регистры, по которым пользователи реально ищут, и отключите служебные структуры. Это разово потребует анализа, но постоянно экономит время обновления и место в базе.

Настройте расписание обновления под ритм работы компании: для активно меняющихся баз — каждые 15–30 минут инкрементально, для архивных — раз в сутки ночью. Контролируйте дату последнего обновления и длительность операции — рост длительности сигнализирует о раздувании индекса.

Обучите пользователей базовому синтаксису: кавычки для фраз, звёздочка для масок, восклицательный знак для исключений. Большинство жалоб «поиск не работает» на практике оказываются неправильно составленным запросом, и короткая памятка снимает основную часть обращений.

Итог

Что важно запомнить

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

Частые вопросы

Почему полнотекстовый поиск не находит документ, созданный сегодня?

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

Можно ли искать по содержимому прикреплённых файлов?

Да, если в настройках включено извлечение текста из присоединённых файлов. Поиск сработает для форматов с текстовым слоем (Word, PDF с текстом). Сканированные изображения без распознавания текста индексироваться не будут.

Полнотекстовый поиск замедляет работу базы?

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

Как искать по части номера или артикула?

Используйте маску со звёздочкой, например 123 или АБ-123*. Без маски поиск работает по целым словам, и фрагмент внутри длинного номера найден не будет.

Видит ли пользователь в результатах объекты, к которым у него нет доступа?

Нет. Результаты полнотекстового поиска фильтруются с учётом прав доступа: пользователь видит только те объекты, которые ему разрешено просматривать обычным способом.

Что делать, если поиск находит давно удалённые объекты?

Это признак рассинхронизации индекса. Выполните полное перестроение индекса в нерабочее время — после него устаревшие записи исчезнут из результатов.