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

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

Как обновить индекс полнотекстового поиска в 1С

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

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

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

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

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

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

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

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

Как обновить индекс вручную через режим «Предприятие»

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

Порядок действий в типовых конфигурациях на управляемых формах:

  1. Откройте раздел «Администрирование».
  2. Перейдите в «Обслуживание» (в некоторых конфигурациях — «Поддержка и обслуживание»).
  3. Найдите пункт «Настройка полнотекстового поиска» или «Полнотекстовый поиск».
  4. Нажмите кнопку «Обновить индекс».
  5. Дождитесь завершения операции — в окне отобразится состояние индекса и дата актуальности.

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

Порядок действий
  1. 1
    Откройте «Администрирование → Обслуживание»
  2. 2
    Перейдите в «Настройка полнотекстового поиска»
  3. 3
    Нажмите «Обновить индекс» и дождитесь завершения
  4. 4
    Проверьте дату актуальности индекса в том же окне
  5. 5
    Выполните тестовый поиск по документу, созданному недавно

Обновление индекса программно и через конфигуратор

Для администраторов и разработчиков доступен программный интерфейс. Метод ОбновитьИндекс() менеджера полнотекстового поиска выполняет то же действие, что и кнопка в интерфейсе, но его можно вызвать из внешней обработки, консоли кода или собственного регламентного задания.

bsl
ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Ложь);
// Первый параметр — слияние индексов после обновления
// Второй — режим порционного обновления

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

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

Настройка автоматического обновления по расписанию

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

Откройте «Администрирование → Обслуживание → Регламентные и фоновые задания», найдите оба задания и проверьте, что флажок «Использование» установлен. Рекомендуемая логика расписания: обновление — каждые 30–60 минут в течение рабочего дня, слияние — один раз ночью, когда пользователи не работают. Слишком частое слияние (например, каждый час) создаёт лишнюю нагрузку на дисковую подсистему без заметной пользы.

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

Сравнение вариантов

Ручное обновление

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

Регламентное задание

Оптимально для клиент-серверных баз. Работает без участия администратора, но требует контроля ошибок выполнения.

Программный вызов

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

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

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

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

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

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

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

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

Соответствует времени последнего обновления

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

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

Поиск свежего документа по уникальному слову
Норма

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

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

Документ не найден при исправном поиске

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

Задание завершено без ошибок

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

Есть ошибки прав доступа или блокировок

Типичные проблемы и их решение

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

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

Когда поиск ведёт себя непредсказуемо (находит удалённые объекты, не находит очевидное, работает очень медленно), помогает полная перестройка: очистите индекс кнопкой «Очистить индекс», затем выполните обновление. Учтите, что на большой базе полное индексирование займёт значительное время, поэтому планируйте его на нерабочие часы.

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

FAQ: частые вопросы об обновлении индекса

Как часто нужно обновлять индекс полнотекстового поиска?

Зависит от интенсивности ввода данных. При активной работе пользователей разумный интервал — 30–60 минут. Если данные меняются редко, достаточно обновления раз в несколько часов или раз в день. Слияние индексов при этом планируют ежедневно в ночное время.

Чем обновление отличается от слияния индексов?

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

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

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

Можно ли обновлять индекс, пока пользователи работают?

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

Нужно ли обновлять индекс после обновления конфигурации?

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

Что делать, если регламентное задание обновления завершается ошибкой?

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

Итог

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

Индекс полнотекстового поиска обновляется из раздела «Администрирование → Обслуживание» вручную или регламентным заданием. Обновление выполняйте часто, слияние — ночью, полное переиндексирование — только при реальных проблемах и в нерабочее время. После любой операции проверяйте дату актуальности и тестовый поиск свежего документа.