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

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

Индекс полнотекстового поиска 1С: зачем нужен и как его использовать

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

Индекс полнотекстового поиска в 1С — это специальная структура данных, которая позволяет искать информацию по содержимому базы: по текстам документов, наименованиям товаров, комментариям, присоединённым файлам. Без индекса поиск слова «счёт-фактура 145 от Петрова» по всей базе занял бы минуты, потому что платформе пришлось бы последовательно читать каждую запись. С индексом результат появляется за секунды.

Механизм работает по принципу предварительного анализа: платформа заранее разбивает тексты на отдельные слова, приводит их к базовой форме и строит таблицу соответствий «слово → объекты, где оно встречается». Когда пользователь вводит запрос, система не сканирует базу, а обращается к готовой таблице. Цена этого удобства — необходимость регулярно обновлять индекс, иначе новые документы не будут находиться.

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

Как устроен полнотекстовый поиск в 1С

Платформа 1С:Предприятие включает встроенный механизм полнотекстового поиска, который работает на уровне СУБД-независимого слоя. При создании или обновлении индекса система последовательно читает объекты, включённые в поиск (справочники, документы, планы видов характеристик и другие типы, у которых включено полнотекстовое индексирование), извлекает текстовые реквизиты и строит индекс.

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

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

Для чего индекс нужен на практике

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

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

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

Четвёртая задача — ускорение стандартных механизмов. Строка поиска в динамических списках и глобальный поиск по данным в типовых конфигурациях опираются именно на полнотекстовый индекс. Если индекс устарел или отключён, эти функции либо не работают, либо возвращают неполные результаты.

Как включить и настроить индексирование

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

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

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

Обновление индекса обычно автоматизируют регламентным заданием. В типовых конфигурациях оно уже существует — нужно проверить, что задание активно, расписание разумное (например, каждые 15–60 минут в рабочее время), а выполнение не завершается ошибками. Журнал регистрации покажет историю запусков.

Какие данные попадают в индекс

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

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

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

Новый документ не находитсяИндекс устарел

Когда последний раз выполнялось обновление индекса

Документ не находится даже после обновленияПоле не индексируется

Свойство «Полнотекстовый поиск» у реквизита в конфигураторе

Разные пользователи видят разный результатОграничение прав

Права доступа к объектам у конкретного пользователя

Поиск вообще не работаетМеханизм отключён

Настройку «Разрешить полнотекстовый поиск» в администрировании

Обновление индекса: режимы и расписание

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

Выбор расписания — компромисс между актуальностью и нагрузкой. Для базы, где документы создаются постоянно и их нужно находить сразу, разумен интервал 15–30 минут. Для архивных или редко изменяемых баз достаточно обновления раз в сутки ночью. Слишком частое обновление (каждую минуту) на большой базе создаёт лишнюю нагрузку без заметной пользы.

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

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

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

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Включили поиск, но не настроили расписание обновления — индекс быстро устаревает, пользователи теряют доверие к поиску
02
Полное перестроение индекса в рабочее время — жалобы на «торможение» всей базы
03
Ожидание, что найдётся текст из отсканированной картинки — без распознавания текста файл не индексируется по содержимому
04
Поиск подстроки в середине слова без подстановочных символов — индекс работает по целым словам, а не по произвольным фрагментам

Как проверить, что индекс работает правильно

Простейшая проверка: создайте тестовый документ с уникальным словом в комментарии (например, вымышленной фамилией), дождитесь обновления индекса и найдите документ через строку поиска. Если документ найден — цепочка «запись → индексирование → поиск» работает.

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

Контрольные точки

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

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

Документ находится по слову из комментария

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

Документ не находится — задание обновления не отработало

Журнал регистрации по регламентному заданию
Норма

Задание выполняется по расписанию без ошибок

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

Ошибки выполнения или давнее отсутствие запусков

Поиск по старым данным
Норма

Находятся документы за прошлые периоды

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

Старые данные не находятся — индекс строился не полностью

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

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

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

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

Замедляет ли индекс запись документов?

Практически нет: индекс не обновляется в транзакции записи. Нагрузка возникает только во время работы регламентного задания обновления, поэтому его расписание и стоит выносить на периоды меньшей активности.

Нужен ли полнотекстовый поиск в небольшой базе?

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

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

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

Индексируются ли присоединённые файлы?

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

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

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

Итог

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

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