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