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

Разработка и Конфигурация · 10 мин

Как в 1С добавить строку поиска

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

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

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

Определите, какой именно поиск вам нужен

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

Первые три сценария в типовых конфигурациях («Бухгалтерия предприятия», «Управление торговлей», «Зарплата и управление персоналом» и другие) реализованы платформой и не требуют доработки. Четвёртый сценарий — задача разработчика, и он выполняется в конфигураторе. Смешивать подходы не стоит: если штатный поиск решает задачу, доработка только усложнит обновление конфигурации.

Маршрут решения

Как выбрать действие

Нужно быстро находить записи в открытом списке документов или справочникаИспользуйте штатную строку поиска списка или сочетание Ctrl+F
Нужно искать текст по всей базе, включая содержимое документов и комментарииВключите и настройте полнотекстовый поиск
Нужно поле поиска на собственной форме или в обработкеДобавьте реквизит-строку и программный отбор в конфигураторе

Строка поиска в списках без доработки конфигурации

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

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

Поиск в поле ввода при выборе значения

Когда вы заполняете реквизит документа (например, «Контрагент»), поиск работает автоматически: начните вводить название прямо в поле — платформа покажет выпадающий список совпадений. Режим поиска настраивается в конфигураторе у объекта метаданных: свойства «Способ поиска строки при вводе» (по началу строки или по подстроке) и «Полнотекстовый поиск при вводе». Пользователю менять это не нужно, но полезно знать: если поиск «не находит» значение по середине названия, причина именно в настройке «по началу строки».

Включение полнотекстового поиска по всей базе

Полнотекстовый поиск ищет слова внутри всех данных: в текстах документов, комментариях, описаниях товаров, присоединённых файлах. Это самый мощный вариант «строки поиска», но он требует предварительной настройки администратором.

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

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

Порядок включения полнотекстового поиска
  1. 1
    Откройте главное меню и включите отображение команды «Все функции» в параметрах
  2. 2
    Перейдите: Все функции → Стандартные → Управление полнотекстовым поиском
  3. 3
    Нажмите «Включить полнотекстовый поиск» и подтвердите
  4. 4
    Запустите обновление индекса и дождитесь завершения
  5. 5
    Проверьте поиск: введите заведомо существующее слово из документа

Добавление строки поиска на форму в конфигураторе

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

Последовательность в конфигураторе: откройте нужную форму, добавьте реквизит формы «СтрокаПоиска» (тип «Строка», длина, например, 100), перетащите его в дерево элементов формы над таблицей списка. У элемента поля установите свойство «КнопкаОчистки» в «Да» и создайте обработчик события «ПриИзменении».

Пример кода обработчика

В обработчике изменения строки поиска к основному реквизиту списка добавляется отбор по подстроке. Пример для формы списка справочника:

&НаКлиенте

Процедура СтрокаПоискаПриИзменении(Элемент)

УстановитьОтборПоСтроке();

КонецПроцедуры

&НаСервере

Процедура УстановитьОтборПоСтроке()

ЭлементыОтбора = Список.Отбор.Элементы;

ЭлементыОтбора.Очистить();

Если Не ПустаяСтрока(СтрокаПоиска) Тогда

НовыйЭлемент = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");

НовыйЭлемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;

НовыйЭлемент.ПравоеЗначение = СтрокаПоиска;

НовыйЭлемент.Использование = Истина;

КонецЕсли;

КонецПроцедуры

Вид сравнения «Содержит» ищет подстроку в любом месте наименования. Если нужно искать по нескольким полям одновременно (например, по наименованию и коду), добавьте несколько элементов отбора, объединив их группой отбора с типом «ГруппаИли».

bsl
НовыйЭлемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;

Проверка результата и типичные ошибки

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

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

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

Поиск по части наименования
Норма

Записи находятся при вводе фрагмента слова

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

Находится только при вводе с первого символа — стоит режим «по началу строки»

Очистка строки поиска
Норма

Список показывает все записи

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

Отбор остаётся — обработчик не снимает использование отбора

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

Находит слова из текста документов

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

Ничего не находит — индекс не построен или устарел

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

Ограничения и рекомендации

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

Для доработки типовых конфигураций используйте расширения конфигурации вместо прямого изменения типовой формы — это сохранит возможность автоматического обновления. Поиск с видом сравнения «Содержит» на очень больших таблицах (миллионы записей) может работать медленно, так как не использует индексы; в таких случаях рассмотрите полнотекстовый поиск или отбор по началу строки.

Итог

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

В типовых конфигурациях строка поиска уже встроена: используйте Ctrl+F в списках и включите полнотекстовый поиск для глобального поиска по базе. Собственная строка поиска на форме делается через реквизит-строку и программный отбор динамического списка. Перед изменениями в конфигураторе делайте резервную копию, а типовые формы дорабатывайте через расширения.

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

Почему в списке нет поля поиска, хотя раньше было?

Панель навигации могла быть скрыта настройками формы. Откройте меню «Ещё» в форме списка и проверьте команды настройки панели навигации и списка. Альтернатива, которая работает всегда, — сочетание Ctrl+F.

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

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

Можно ли искать сразу по нескольким полям, например по наименованию и артикулу?

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

Почему поиск в поле ввода находит значение только с начала названия?

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

Нужны ли права администратора для настройки поиска?

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

Можно ли добавить поиск в обычное приложение (не управляемые формы)?

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