Как ускорить поиск документов и справочников в 1С

· 9 мин

Содержание

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

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

Быстрый поиск внутри списка документов и справочников

Самый частый сценарий — найти строку в открытом журнале или справочнике. Отдельно его включать не нужно, он работает всегда.

Два способа:

  • 📌 Просто начните печатать. Встаньте в нужную колонку списка и наберите первые буквы — курсор прыгнет на первое значение, которое начинается с этих символов. Поиск идёт по колонке, в которой стоит фокус.
  • 🔎 Нажмите Ctrl+F. Откроется строка поиска над списком. Здесь ищется любое вхождение подстроки, а не только начало значения. Удобно, когда помните середину номера или кусок наименования.

В строке поиска по Ctrl+F есть настройки (значок рядом с полем): искать по текущей колонке или по всем видимым, с начала строки или в любом месте. По умолчанию — любое вхождение по текущей колонке.

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

Чтобы сбросить результат и вернуть полный список, нажмите Esc или крестик в строке поиска. Иначе список останется отфильтрованным, и будет казаться, что «половина документов пропала».

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

Как включить и обновить полнотекстовый поиск

Полнотекстовый поиск (ФТП) ищет сразу по всем справочникам, документам, их реквизитам и табличным частям. Именно он стоит за строкой-лупой в заголовке типовых конфигураций. Работает он только при двух условиях: поиск включён и индекс построен.

Управление лежит в служебной обработке. Путь:

  1. Включите отображение команды «Все функции»: Главное меню → Настройки → Параметры, поставьте галку «Отображать команду “Все функции”`.
  2. Откройте Все функции → Стандартные → Управление полнотекстовым поиском.
  3. Нажмите Включить (если выключен) и затем Обновить индекс.
Проверка полнотекстового поиска
Выполнено: 0 / 4

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

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

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

Язык запросов: маски, точные фразы и логика

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

Что нужноКак написатьПример
Любое окончание слова* после корнябухгалт* найдёт «бухгалтер», «бухгалтерия»
Точная фраза целикомфраза в кавычках"акт выполненных работ"
Оба слова обязательныИ между словамидоговор И аренда
Любое из словИЛИсчёт ИЛИ фактура
Исключить словоНЕпоставка НЕ возврат
Слова рядомРЯДОМ/nоплата РЯДОМ/3 аванс
С учётом опечаток# перед словом#директор

Несколько правил, о которых часто забывают:

  • 🔠 Операторы И, ИЛИ, НЕ пишутся заглавными буквами, иначе программа примет их за обычные слова для поиска.
  • ✳️ Маска * работает только в конце слова. *тор в начале не сработает.
  • 📝 Регистр самих слов не важен: «договор» и «ДОГОВОР» ищутся одинаково.

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

Поиск сразу по нескольким полям и колонкам

Частая задача — найти документ, зная кусок номера и имя контрагента одновременно. Здесь способ зависит от того, где ищете.

В открытом списке. Строка Ctrl+F ищет по подстроке во всех видимых колонках, если в её настройках выбрано «Искать во всех колонках». Тогда одно и то же слово проверяется и в номере, и в наименовании, и в комментарии — по всем сразу.

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

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

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

Чем ускорить поиск в больших базах

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

  1. Автоматическое обновление индекса. Индекс должен обновляться регламентным заданием по расписанию, а не руками. В клиент-серверном варианте задание выполняется на сервере и пользователей не трогает. Проверьте, что оно включено и реально отрабатывает.
  2. Разумный интервал. Обновлять индекс каждую минуту на активной базе — лишняя нагрузка. Для большинства баз хватает интервала в 5–15 минут: свежие документы появятся в поиске с небольшой задержкой, но сервер не будет перегружен.
  3. Отключите индексацию ненужного. В конфигураторе у реквизитов и объектов есть свойство Полнотекстовый поиск. Если по каким-то служебным данным искать не нужно, переведите их в значение «Не использовать» — индекс станет меньше, а обновление быстрее. Это работа для специалиста с доступом к конфигуратору.
  4. Выключите ФТП, если им не пользуются. Когда в базе никто не ищет глобально, а работают только через отборы, полнотекстовый поиск можно отключить совсем. Индекс перестанет строиться и тратить ресурсы.

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

Где искать в типовых: Бухгалтерия, ЗУП, УТ и ERP

Сам механизм ФТП одинаков во всех конфигурациях на платформе 8.3 с интерфейсом «Такси». Отличается только то, как вызвать строку глобального поиска.

КонфигурацияГде строка поиска
Бухгалтерия 3.0Значок лупы в правом верхнем углу основного окна
ЗУП 3.1Значок лупы в заголовке окна
Управление торговлей 11Значок лупы в заголовке окна
ERPЗначок лупы в заголовке окна

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

Обработка «Управление полнотекстовым поиском» тоже доступна в любой типовой через Все функции → Стандартные. Отдельного «поиска для ЗУП» или «поиска для УТ» не существует — это общий механизм платформы.

Технические нюансы для администраторов и разработчиков

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

  • Проверить, актуален ли индекс: ПолнотекстовыйПоиск.ИндексАктуален().
  • Обновить индекс из кода (например, по кнопке или в задании): ПолнотекстовыйПоиск.ОбновитьИндекс().
  • Построить программный список результатов: ПолнотекстовыйПоиск.СоздатьСписок(СтрокаПоиска, РазмерПорции).

Запуск полного обновления индекса завершённым пользовательским сеансом — плохая идея на большой базе: операция долгая. Выносите её в фоновое или регламентное задание на сервере.

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

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

Почему поиск не находит нужный документ

Чаще всего причина не в запросе, а в состоянии индекса или настройках. Сверьтесь по шагам.

Диагностика: выберите симптом

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

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

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

Чем быстрый поиск в списке отличается от полнотекстового?
Быстрый поиск (Ctrl+F или набор с клавиатуры) ищет текст только в текущем открытом списке и по видимым колонкам. Полнотекстовый поиск по лупе ищет сразу по всей базе: по всем справочникам и документам.
Нужно ли что-то настраивать для поиска в списке?
Нет. Быстрый поиск по спискам работает всегда и включения не требует. Настраивать и индексировать нужно только полнотекстовый поиск.
Как часто обновляется полнотекстовый индекс?
По расписанию регламентного задания. Типичный интервал — несколько минут, поэтому только что введённый документ может появиться в глобальном поиске с небольшой задержкой.
Можно ли искать по части номера документа?
Да. В строке списка Ctrl+F ищите любое вхождение подстроки. В полнотекстовом поиске используйте маску: 0012*.
Поиск сильно тормозит на большой базе — что делать?
Проверьте, что индекс обновляется в фоне по расписанию, а не вручную в момент поиска. Отключите индексацию ненужных реквизитов в конфигураторе и увеличьте интервал обновления.