Как ускорить поиск документов и справочников в 1С
Содержание
Если поиск в 1С «ничего не находит», в девяти случаях из десяти дело не в программе, а в том, что полнотекстовый индекс выключен или не обновлён. Второй частый промах — люди жмут Ctrl+F там, где достаточно просто начать печатать, и наоборот.
Разберём оба механизма поиска по отдельности: быстрый поиск внутри списка и глобальный полнотекстовый поиск по всей базе. Покажу, где они включаются, как писать сложные запросы с операторами и масками, и что настроить, чтобы поиск не тормозил на базе в десятки гигабайт.
Быстрый поиск внутри списка документов и справочников
Самый частый сценарий — найти строку в открытом журнале или справочнике. Отдельно его включать не нужно, он работает всегда.
Два способа:
- 📌 Просто начните печатать. Встаньте в нужную колонку списка и наберите первые буквы — курсор прыгнет на первое значение, которое начинается с этих символов. Поиск идёт по колонке, в которой стоит фокус.
- 🔎 Нажмите
Ctrl+F. Откроется строка поиска над списком. Здесь ищется любое вхождение подстроки, а не только начало значения. Удобно, когда помните середину номера или кусок наименования.
В строке поиска по Ctrl+F есть настройки (значок рядом с полем): искать по текущей колонке или по всем видимым, с начала строки или в любом месте. По умолчанию — любое вхождение по текущей колонке.
Отдельно стоит знать про иерархические справочники — номенклатуру, статьи затрат, подразделения. Если справочник показан деревом, быстрый поиск ищет в пределах текущей открытой группы, а не по всему справочнику. Чтобы искать по всем группам сразу, отключите иерархию: в командной панели справочника есть команда просмотра списком (без группировки). После этого поиск пройдёт по всем элементам.
Чтобы сбросить результат и вернуть полный список, нажмите Esc или крестик в строке поиска. Иначе список останется отфильтрованным, и будет казаться, что «половина документов пропала».
Этот поиск работает только по тому, что уже загружено в текущий список, и только по видимым колонкам. Искать «вообще по всей базе» он не умеет — для этого есть полнотекстовый поиск.
Как включить и обновить полнотекстовый поиск
Полнотекстовый поиск (ФТП) ищет сразу по всем справочникам, документам, их реквизитам и табличным частям. Именно он стоит за строкой-лупой в заголовке типовых конфигураций. Работает он только при двух условиях: поиск включён и индекс построен.
Управление лежит в служебной обработке. Путь:
- Включите отображение команды «Все функции»:
Главное меню → Настройки → Параметры, поставьте галку «Отображать команду “Все функции”`. - Откройте
Все функции → Стандартные → Управление полнотекстовым поиском. - Нажмите Включить (если выключен) и затем Обновить индекс.
В окне обработки видно текущее состояние: включён ли поиск и актуален ли индекс. Если написано, что индекс требует обновления, значит, в базу вводили новые данные, а индекс за ними ещё не успел — свежие документы в поиск не попадут, пока не обновите.
Индексируются текстовые данные объектов: наименования, номера, комментарии, табличные части, а ссылки попадают в индекс по своему представлению. Поэтому найти документ можно и по тексту из его строк, а не только по шапке. Отдельный файл индекса хранится в служебных данных базы и растёт вместе с ней — это нормально.
Первое построение индекса на большой базе — тяжёлая операция: читается вся база целиком. Запускайте её в нерабочее время, когда в базе мало пользователей.
Язык запросов: маски, точные фразы и логика
Полнотекстовый поиск понимает не только отдельные слова. Операторы позволяют сузить выдачу, когда по одному слову находятся сотни результатов.
| Что нужно | Как написать | Пример |
|---|---|---|
| Любое окончание слова | * после корня | бухгалт* найдёт «бухгалтер», «бухгалтерия» |
| Точная фраза целиком | фраза в кавычках | "акт выполненных работ" |
| Оба слова обязательны | И между словами | договор И аренда |
| Любое из слов | ИЛИ | счёт ИЛИ фактура |
| Исключить слово | НЕ | поставка НЕ возврат |
| Слова рядом | РЯДОМ/n | оплата РЯДОМ/3 аванс |
| С учётом опечаток | # перед словом | #директор |
Несколько правил, о которых часто забывают:
- 🔠 Операторы
И,ИЛИ,НЕпишутся заглавными буквами, иначе программа примет их за обычные слова для поиска. - ✳️ Маска
*работает только в конце слова.*торв начале не сработает. - 📝 Регистр самих слов не важен: «договор» и «ДОГОВОР» ищутся одинаково.
Нечёткий поиск по # выручает, когда не уверены в написании фамилии или названия контрагента: он находит слова, отличающиеся на пару символов. Платить за это приходится более широкой выдачей — лишних результатов будет больше.
Поиск сразу по нескольким полям и колонкам
Частая задача — найти документ, зная кусок номера и имя контрагента одновременно. Здесь способ зависит от того, где ищете.
В открытом списке. Строка Ctrl+F ищет по подстроке во всех видимых колонках, если в её настройках выбрано «Искать во всех колонках». Тогда одно и то же слово проверяется и в номере, и в наименовании, и в комментарии — по всем сразу.
Через полнотекстовый поиск. Он изначально смотрит во все реквизиты объекта, которые помечены для индексации. Одним запросом Иванов договор вы получите документы, где в одном поле есть «Иванов», а в другом — «договор», даже если это разные реквизиты одного документа.
Результаты глобального поиска сгруппированы по типам объектов: отдельно найденные документы, отдельно элементы справочников. По клику вы сразу переходите к нужному объекту. Это удобно, когда не помните, документ вам нужен или элемент справочника, — ищете по слову и выбираете из обеих групп.
Если нужно отобрать список по конкретному полю (например, все документы одного контрагента), поиск — не лучший инструмент. Используйте отбор: команда настройки списка в его командной панели, где задаётся условие по колонке. Поиск ищет текст, отбор фильтрует по значению.
Чем ускорить поиск в больших базах
На базе в десятки гигабайт поиск начинает ощутимо задумываться. Ускоряют его настройкой индекса, а не «железом». В клиент-серверном варианте индекс строит сервер, и тяжёлая переиндексация не блокирует работу клиентов. В файловой базе всё считает тот компьютер, с которого запустили обновление, — поэтому для крупных файловых баз полное построение особенно заметно по времени.
- Автоматическое обновление индекса. Индекс должен обновляться регламентным заданием по расписанию, а не руками. В клиент-серверном варианте задание выполняется на сервере и пользователей не трогает. Проверьте, что оно включено и реально отрабатывает.
- Разумный интервал. Обновлять индекс каждую минуту на активной базе — лишняя нагрузка. Для большинства баз хватает интервала в 5–15 минут: свежие документы появятся в поиске с небольшой задержкой, но сервер не будет перегружен.
- Отключите индексацию ненужного. В конфигураторе у реквизитов и объектов есть свойство Полнотекстовый поиск. Если по каким-то служебным данным искать не нужно, переведите их в значение «Не использовать» — индекс станет меньше, а обновление быстрее. Это работа для специалиста с доступом к конфигуратору.
- Выключите ФТП, если им не пользуются. Когда в базе никто не ищет глобально, а работают только через отборы, полнотекстовый поиск можно отключить совсем. Индекс перестанет строиться и тратить ресурсы.
Отключение индексации реквизитов и выключение ФТП меняют поведение поиска для всех пользователей. Согласуйте это, прежде чем менять, — иначе коллеги внезапно перестанут находить привычные документы.
Где искать в типовых: Бухгалтерия, ЗУП, УТ и ERP
Сам механизм ФТП одинаков во всех конфигурациях на платформе 8.3 с интерфейсом «Такси». Отличается только то, как вызвать строку глобального поиска.
| Конфигурация | Где строка поиска |
|---|---|
| Бухгалтерия 3.0 | Значок лупы в правом верхнем углу основного окна |
| ЗУП 3.1 | Значок лупы в заголовке окна |
| Управление торговлей 11 | Значок лупы в заголовке окна |
| ERP | Значок лупы в заголовке окна |
Во всех типовых решениях глобальный поиск вызывается одинаково — кликом по лупе в верхней части окна. Дальше работает тот же язык запросов с масками и операторами, что описан выше.
Обработка «Управление полнотекстовым поиском» тоже доступна в любой типовой через Все функции → Стандартные. Отдельного «поиска для ЗУП» или «поиска для УТ» не существует — это общий механизм платформы.
Технические нюансы для администраторов и разработчиков
Из встроенного языка полнотекстовый поиск доступен через глобальный объект ПолнотекстовыйПоиск. Пригодится для фоновой переиндексации и для своих форм поиска.
- Проверить, актуален ли индекс:
ПолнотекстовыйПоиск.ИндексАктуален(). - Обновить индекс из кода (например, по кнопке или в задании):
ПолнотекстовыйПоиск.ОбновитьИндекс(). - Построить программный список результатов:
ПолнотекстовыйПоиск.СоздатьСписок(СтрокаПоиска, РазмерПорции).
Запуск полного обновления индекса завершённым пользовательским сеансом — плохая идея на большой базе: операция долгая. Выносите её в фоновое или регламентное задание на сервере.
На уровне конфигурации индексируемость задаётся свойством Полнотекстовый поиск у объектов метаданных и их реквизитов. Если новый реквизит не находится поиском, первым делом проверьте в конфигураторе, что у него это свойство в значении «Использовать», и только потом грешите на индекс.
После изменения состава индексируемых реквизитов в конфигураторе индекс нужно построить заново — старый не знает о ваших правках.
Почему поиск не находит нужный документ
Чаще всего причина не в запросе, а в состоянии индекса или настройках. Сверьтесь по шагам.
"точная фраза" или добавьте второе слово через И.* в конце корня: контраг*. Отдельное окончание без корня поиск не находит.# перед словом, например #сидоров.Esc в строке поиска и снимите отборы в настройке списка.Отдельная ситуация — поиск работал и «вдруг сломался». Обычно это сбой или переполнение индекса. Лечится очисткой и повторным построением индекса в той же обработке: сначала «Очистить индекс », затем «Обновить индекс». На большой базе повторное построение займёт время, планируйте его на вечер.
Ещё один неочевидный случай: искомое слово в базе есть, но короче трёх символов или это служебный предлог. Очень короткие слова и общеупотребительные предлоги поиск может игнорировать, чтобы не захламлять выдачу. Решение простое — добавьте к запросу второе, более значимое слово или ищите по более длинному фрагменту.
Частые вопросы
Чем быстрый поиск в списке отличается от полнотекстового?
Ctrl+F или набор с клавиатуры) ищет текст только в текущем открытом списке и по видимым колонкам. Полнотекстовый поиск по лупе ищет сразу по всей базе: по всем справочникам и документам.Нужно ли что-то настраивать для поиска в списке?
Как часто обновляется полнотекстовый индекс?
Можно ли искать по части номера документа?
Ctrl+F ищите любое вхождение подстроки. В полнотекстовом поиске используйте маску: 0012*.