Быстрый старт · 10 мин
Как сделать поиск в 1С: от строки в списке до полнотекстового поиска
Практическое руководство по поиску в 1С: быстрый поиск в списках, полнотекстовый поиск по базе, поиск по строке в конфигураторе, настройка индекса и типичные ошибки.
Поиск в 1С — это не одна функция, а несколько разных механизмов: быстрый поиск в табличной части списка, глобальный поиск по всей базе, полнотекстовый поиск с индексом, а также поиск по строке в конфигураторе для разработчиков. Каждый из них включается по-разному, работает с разной скоростью и подходит для своих задач.
Чаще всего пользователю достаточно строки поиска в форме списка — она уже есть в типовых конфигурациях на управляемых формах. Но если нужно искать по содержимому документов, комментариям и файлам, потребуется включить полнотекстовый поиск и настроить обновление индекса. Разработчику же чаще нужен поиск по коду конфигурации.
Ниже разобраны все основные сценарии: от простого поиска контрагента по названию до настройки индексации большой базы и программного поиска средствами встроенного языка.
Быстрый поиск в списке: как найти элемент за секунды
В любой форме списка (справочники, документы, регистры) в типовых конфигурациях есть поле поиска. Обычно оно расположено над таблицей справа или вызывается комбинацией Ctrl+F. Введите часть наименования, номера или другого реквизита — список отфильтруется автоматически или после нажатия Enter.
Если поле поиска не видно, откройте меню «Ещё» в форме списка и выберите «Найти» или «Найти по номеру». В некоторых формах поиск работает только по текущей колонке: чтобы искать по другому реквизиту, сначала кликните в нужную колонку, затем вызовите поиск.
Для точного поиска документа удобнее команда «Найти по номеру»: введите номер без префикса или с ним — система покажет подходящие документы за выбранный период. Это быстрее, чем прокручивать длинный журнал.
Учтите ограничение: строка поиска в списке ищет только по тем реквизитам, которые администратор или разработчик включил в поисковый состав формы. Если значение точно есть в базе, но не находится — вероятно, поиск по этому полю не настроен, и нужен либо отбор, либо полнотекстовый поиск.
- 1Откройте нужный список: справочник, журнал документов или регистр
- 2Нажмите Ctrl+F или кликните в поле поиска над таблицей
- 3Введите фрагмент наименования, номера или ИНН
- 4Если ничего не найдено — проверьте, по какой колонке идёт поиск, или используйте «Ещё» → «Найти»
- 5Для точного результата примените отбор: «Ещё» → «Настроить список»
Отбор как альтернатива поиску
Когда нужно найти не одну запись, а группу — все документы по контрагенту, все товары группы, все непроведённые накладные — вместо поиска используйте отбор. Откройте «Ещё» → «Настроить список», добавьте условие по нужному полю, выберите вид сравнения («Равно», «Содержит», «В списке», «Не заполнено») и укажите значение.
Отбор гибче поиска: условия можно комбинировать по «И» и «ИЛИ», сохранять как варианты списка и быстро переключаться между ними. Например, менеджеру удобно сохранить вариант «Мои документы за неделю» и не настраивать фильтр каждый раз заново.
Признак того, что вам нужен именно отбор, а не поиск: вы заранее знаете, по какому полю фильтровать, и результат нужен многократно. Поиск же оптимален для разовой задачи «найти конкретный элемент по фрагменту текста».
Полнотекстовый поиск по всей базе
Полнотекстовый поиск позволяет искать по содержимому любых объектов: текстам комментариев, описаниям, наименованиям, присоединённым файлам. Он работает по заранее построенному индексу, поэтому сначала его нужно включить.
В типовых конфигурациях откройте раздел «Администрирование» → «Общие настройки» (или «Настройка полнотекстового поиска», название зависит от конфигурации), установите флаг «Использовать полнотекстовый поиск» и нажмите «Обновить индекс». Первичное построение индекса на большой базе может занять заметное время — запускайте его в нерабочие часы.
После включения в шапке программы появляется поле глобального поиска. Введите запрос — система покажет найденные объекты с фрагментами текста, где встречается запрос. Поддерживаются логические операторы: «И», «ИЛИ», «НЕ», а также поиск точной фразы в кавычках и поиск по маске со звёздочкой.
Индекс требует регулярного обновления, иначе новые документы не будут находиться. В клиент-серверном варианте обновление обычно настраивается регламентным заданием автоматически; в файловой базе проверьте, что задание «Обновление индекса полнотекстового поиска» выполняется по расписанию.
Глобальный поиск в конфигураторе
Разработчику и администратору поиск нужен в первую очередь по коду и метаданным. В конфигураторе откройте «Правка» → «Глобальный поиск» (Ctrl+Shift+F). Укажите искомую строку, область поиска (вся конфигурация, выбранные объекты, открытые модули) и параметры: учитывать регистр, искать слово целиком, использовать регулярные выражения.
Результаты выводятся списком с указанием объекта, модуля и строки. Двойной клик открывает нужное место в коде. Это основной инструмент при рефакторинге: например, чтобы найти все места, где вызывается процедура, достаточно глобального поиска по её имени.
Для замены используйте «Глобальная замена» (Ctrl+Shift+H) из того же меню. Перед массовой заменой обязательно сделайте выгрузку конфигурации в файл или убедитесь, что есть свежая резервная копия: отменить глобальную замену одной командой нельзя.
Программный поиск средствами встроенного языка
В коде поиск по данным выполняется запросами или методами менеджеров объектов. Для поиска элемента справочника по точному наименованию есть метод НайтиПоНаименованию(), по коду — НайтиПоКоду(), по произвольному реквизиту — НайтиПоРеквизиту(). Эти методы быстры, но ищут только точное совпадение.
Для поиска по части строки используйте запрос с оператором ПОДОБНО и спецсимволом процента. Пример: ГДЕ Номенклатура.Наименование ПОДОБНО "%кабель%". Учтите, что такой запрос не использует индекс по наименованию и на больших таблицах выполняется медленно — не вызывайте его в циклах и при каждом открытии формы.
Для полнотекстового поиска из кода существует объект ПолнотекстовыйПоиск: метод СоздатьСписок() формирует список поиска, Получить() возвращает порцию результатов. Это правильный способ искать по текстовому содержимому программно — он использует готовый индекс и не нагружает СУБД сканированием таблиц.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ Наименование ПОДОБНО &Шаблон");
Запрос.УстановитьПараметр("Шаблон", "%" + СтрокаПоиска + "%");
Результат = Запрос.Выполнить().Выгрузить();Как проверить, что поиск работает правильно
После настройки полнотекстового поиска или изменения формы списка проверьте результат на контрольном примере. Возьмите заведомо существующий объект с уникальным словом в наименовании или комментарии и убедитесь, что он находится всеми нужными способами.
Если поиск не находит очевидное, двигайтесь по цепочке: нет ли скрытого отбора в списке, включён ли полнотекстовый поиск, когда обновлялся индекс, входит ли нужный реквизит в состав индексируемых полей, есть ли у пользователя права на объект — поиск не показывает данные, недоступные по правам.
Как проверить результат
Введённый фрагмент наименования находит элемент за 1–2 секунды
Элемент не находится, хотя виден в списке при прокрутке — сброшен не весь отбор или поиск идёт не по той колонке
Новый документ находится после ближайшего обновления индекса
Документ не находится спустя сутки — регламентное задание обновления индекса не выполняется
Глобальный поиск показывает все модули с искомой строкой
Часть модулей пропущена — область поиска ограничена выбранными объектами
Частые вопросы о поиске в 1С
Почему поиск в списке не находит элемент, который точно есть?
Три типовые причины: в списке установлен отбор, исключающий элемент; поиск выполняется по другой колонке, чем вы ожидаете; у пользователя нет прав на объект. Сначала сбросьте отбор через «Ещё» → «Установить стандартные настройки», затем повторите поиск.
Как включить полнотекстовый поиск, если пункта в меню нет?
В некоторых конфигурациях настройка находится в «НСИ и администрирование» → «Общие настройки». Если пункта нет совсем, проверьте права: настройка доступна пользователю с правами администратора. В файловой базе индекс можно обновить и программно методом ПолнотекстовыйПоиск.ОбновитьИндекс().
Можно ли искать по содержимому присоединённых файлов?
Да, если конфигурация поддерживает извлечение текста из файлов и эта функция включена. Платформа извлекает текст из распространённых форматов офисных документов и PDF, после чего файлы участвуют в полнотекстовом поиске. Сканированные изображения без распознанного текста не индексируются.
Почему полнотекстовый поиск работает медленно?
Чаще всего индекс сильно фрагментирован или база очень большая. Выполните полное обновление индекса (не слияние, а перестроение) в нерабочее время. Если проблема сохраняется в клиент-серверном варианте, проверьте быстродействие дисковой подсистемы сервера 1С.
Как найти все документы по контрагенту?
Откройте карточку контрагента — в типовых конфигурациях есть связанные списки документов. Альтернатива: откройте журнал документов и установите отбор по полю «Контрагент». Для анализа по нескольким видам документов удобнее отчёт или поиск по ссылке через «Все функции» → «Поиск ссылок на объект».
Чем отличается «Найти» от «Найти по номеру» в журнале документов?
«Найти» ищет по текущей колонке произвольный фрагмент, а «Найти по номеру» оптимизировано именно под номера документов: понимает префиксы, ведущие нули и работает быстрее на больших журналах. Для поиска конкретного документа по номеру всегда используйте второй вариант.
Что важно запомнить
Строка поиска в списке закрывает большинство повседневных задач, отбор — групповые и повторяющиеся фильтры, полнотекстовый поиск — поиск по содержимому с обязательным обновлением индекса. Разработчик ищет по коду глобальным поиском в конфигураторе, а встроенный язык использует запросы с ПОДОБНО или объект ПолнотекстовыйПоиск. Перед массовой заменой в коде всегда делайте резервную копию.