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

Быстрый старт · 10 мин

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

Практическое руководство по поиску в 1С: быстрый поиск в списках, полнотекстовый поиск по базе, поиск по строке в конфигураторе, настройка индекса и типичные ошибки.

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

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

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

Быстрый поиск в списке: как найти элемент за секунды

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

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

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

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

Поиск элемента в списке
  1. 1
    Откройте нужный список: справочник, журнал документов или регистр
  2. 2
    Нажмите Ctrl+F или кликните в поле поиска над таблицей
  3. 3
    Введите фрагмент наименования, номера или ИНН
  4. 4
    Если ничего не найдено — проверьте, по какой колонке идёт поиск, или используйте «Ещё» → «Найти»
  5. 5
    Для точного результата примените отбор: «Ещё» → «Настроить список»

Отбор как альтернатива поиску

Когда нужно найти не одну запись, а группу — все документы по контрагенту, все товары группы, все непроведённые накладные — вместо поиска используйте отбор. Откройте «Ещё» → «Настроить список», добавьте условие по нужному полю, выберите вид сравнения («Равно», «Содержит», «В списке», «Не заполнено») и укажите значение.

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

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

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

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

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

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

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

Глобальный поиск в конфигураторе

Разработчику и администратору поиск нужен в первую очередь по коду и метаданным. В конфигураторе откройте «Правка» → «Глобальный поиск» (Ctrl+Shift+F). Укажите искомую строку, область поиска (вся конфигурация, выбранные объекты, открытые модули) и параметры: учитывать регистр, искать слово целиком, использовать регулярные выражения.

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

Для замены используйте «Глобальная замена» (Ctrl+Shift+H) из того же меню. Перед массовой заменой обязательно сделайте выгрузку конфигурации в файл или убедитесь, что есть свежая резервная копия: отменить глобальную замену одной командой нельзя.

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

Программный поиск средствами встроенного языка

В коде поиск по данным выполняется запросами или методами менеджеров объектов. Для поиска элемента справочника по точному наименованию есть метод НайтиПоНаименованию(), по коду — НайтиПоКоду(), по произвольному реквизиту — НайтиПоРеквизиту(). Эти методы быстры, но ищут только точное совпадение.

Для поиска по части строки используйте запрос с оператором ПОДОБНО и спецсимволом процента. Пример: ГДЕ Номенклатура.Наименование ПОДОБНО "%кабель%". Учтите, что такой запрос не использует индекс по наименованию и на больших таблицах выполняется медленно — не вызывайте его в циклах и при каждом открытии формы.

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

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Наименование ПОДОБНО &Шаблон");
Запрос.УстановитьПараметр("Шаблон", "%" + СтрокаПоиска + "%");
Результат = Запрос.Выполнить().Выгрузить();

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

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

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

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

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

Поиск в списке
Норма

Введённый фрагмент наименования находит элемент за 1–2 секунды

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

Элемент не находится, хотя виден в списке при прокрутке — сброшен не весь отбор или поиск идёт не по той колонке

Полнотекстовый поиск
Норма

Новый документ находится после ближайшего обновления индекса

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

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

Поиск в конфигураторе
Норма

Глобальный поиск показывает все модули с искомой строкой

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

Часть модулей пропущена — область поиска ограничена выбранными объектами

Частые вопросы о поиске в 1С

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

Три типовые причины: в списке установлен отбор, исключающий элемент; поиск выполняется по другой колонке, чем вы ожидаете; у пользователя нет прав на объект. Сначала сбросьте отбор через «Ещё» → «Установить стандартные настройки», затем повторите поиск.

Как включить полнотекстовый поиск, если пункта в меню нет?

В некоторых конфигурациях настройка находится в «НСИ и администрирование» → «Общие настройки». Если пункта нет совсем, проверьте права: настройка доступна пользователю с правами администратора. В файловой базе индекс можно обновить и программно методом ПолнотекстовыйПоиск.ОбновитьИндекс().

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

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

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

Чаще всего индекс сильно фрагментирован или база очень большая. Выполните полное обновление индекса (не слияние, а перестроение) в нерабочее время. Если проблема сохраняется в клиент-серверном варианте, проверьте быстродействие дисковой подсистемы сервера 1С.

Как найти все документы по контрагенту?

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

Чем отличается «Найти» от «Найти по номеру» в журнале документов?

«Найти» ищет по текущей колонке произвольный фрагмент, а «Найти по номеру» оптимизировано именно под номера документов: понимает префиксы, ведущие нули и работает быстрее на больших журналах. Для поиска конкретного документа по номеру всегда используйте второй вариант.

Итог

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

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