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

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

Как добавить поле поиска в 1С

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

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

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

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

Как найти и настроить строку поиска в пользовательском режиме

В управляемых формах списков (справочники «Номенклатура», «Контрагенты», журналы документов) поле поиска обычно расположено в верхней части формы, рядом с командной панелью. Если оно не отображается, нажмите кнопку «Найти» (иконка лупы) или сочетание клавиш Ctrl+F — платформа покажет панель поиска.

Введите фрагмент наименования, артикула или кода и нажмите Enter. Список отфильтруется по совпадениям. Чтобы сбросить поиск, очистите строку и нажмите Enter повторно либо воспользуйтесь кнопкой отмены поиска на панели.

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

Способы поиска в 1С: что выбрать под задачу

Платформа предлагает несколько механизмов поиска, и у каждого свои ограничения. Строка поиска динамического списка подходит для быстрого фильтра по видимым полям. Полнотекстовый поиск (кнопка с лупой в панели инструментов или Ctrl+Shift+F) ищет по содержимому всех объектов, включая тексты документов, но требует включённого полнотекстового индексирования в настройках базы.

Для точного поиска по конкретному реквизиту удобнее отбор: «Ещё → Настроить список → Отбор» позволяет задать условие вида «Артикул содержит …» или «Дата равна …». Отбор надёжнее строки поиска, когда нужно искать по числам, датам или ссылочным полям.

Сравнение вариантов поиска

Строка поиска списка

Быстрый фильтр по видимым полям. Не ищет по скрытым реквизитам и содержимому табличных частей.

Отбор в настройке списка

Точные условия по любым доступным полям, включая даты и ссылки. Требует больше действий для настройки.

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

Ищет по всем данным базы, включая текстовые описания. Работает только при включённом индексировании и может выдавать избыточные результаты.

Своя форма с полем поиска

Полный контроль над логикой через конфигуратор. Требует доработки и тестирования при обновлениях.

Как добавить строку поиска к динамическому списку в конфигураторе

Если вы разрабатываете или дорабатываете форму списка, самый простой путь — использовать штатную строку поиска динамического списка. Откройте конфигуратор, найдите нужный объект (справочник или документ), откройте его форму списка.

В дереве элементов формы выберите таблицу, связанную с динамическим списком, и в палитре свойств найдите свойство «ПоложениеСтрокиПоиска». Установите значение, отличное от «Нет» — например, «Верх» или «Командная панель». Платформа автоматически выведет поле поиска без единой строки кода.

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

Порядок добавления строки поиска
  1. 1
    Откройте конфигуратор и разблокируйте объект конфигурации для изменений
  2. 2
    Откройте форму списка нужного объекта
  3. 3
    Выделите таблицу динамического списка в дереве элементов формы
  4. 4
    В палитре свойств установите «ПоложениеСтрокиПоиска» = «Верх»
  5. 5
    Обновите конфигурацию базы данных (F7) и проверьте форму в режиме предприятия

Как добавить собственное поле поиска с программной обработкой

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

Для элемента формы задайте обработчик события «ИзменениеСодержимого» или кнопку «Найти». В модуле формы программно установите отбор динамического списка через свойство «КомпоновщикНастроек» либо измените параметры запроса, если список построен на произвольном запросе.

&НаКлиенте

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

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

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

&НаСервере

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

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

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

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

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

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

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

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

НовыйОтбор.Использование = Истина;

КонецЕсли;

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

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

Поиск по подстроке и производительность

Условие «Содержит» транслируется в SQL-оператор LIKE с символами % по обеим сторонам, что отключает использование индекса по полю. На справочнике в несколько тысяч записей задержка незаметна, но на таблицах с сотнями тысяч записей поиск может занимать секунды и нагружать сервер СУБД.

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

Если пользователи чаще ищут товары по артикулу, чем по наименованию, вынесите артикул первым полем в отборе поиска и добавьте его в видимые колонки списка. Это ускоряет работу без какой-либо оптимизации запросов.
ПЗ
Практическое замечание

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

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

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

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

Поиск по известному значению
Норма

Запись находится и выводится в списке

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

Список пуст при существующем значении — поле не входит в состав поиска

Сброс поиска
Норма

После очистки строки список показывает все записи

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

Отбор остаётся — не снимается признак «Использование» у элемента отбора

Скорость отклика
Норма

Результат появляется без заметной паузы

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

Задержки в секунды — стоит ограничить длину строки или сменить вид сравнения

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

Ограничения и когда нужен разработчик

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

Если база работает в клиент-серверном варианте, обновление конфигурации выполняется только при отсутствии активных сеансов пользователей. Планируйте доработку на нерабочее время и обязательно делайте выгрузку информационной базы перед изменениями.

Итог

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

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

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

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

Скорее всего, панель поиска скрыта настройками формы. Нажмите Ctrl+F или кнопку «Найти» на командной панели. Если поле не появляется, откройте «Ещё → Изменить форму» и проверьте видимость соответствующего элемента — пользовательские настройки формы могли быть изменены ранее.

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

Да. В пользовательском режиме строка поиска динамического списка ищет по всем полям, включённым в его состав. В программной доработке создайте группу отбора с типом «ИЛИ» и добавьте в неё условия «Содержит» по каждому нужному полю.

Чем полнотекстовый поиск отличается от строки поиска в списке?

Строка поиска фильтрует текущий список по отображаемым полям. Полнотекстовый поиск (Ctrl+Shift+F) ищет по всем объектам базы, включая тексты внутри документов, но требует, чтобы администратор включил полнотекстовое индексирование в настройках информационной базы.

Поиск работает медленно на большом справочнике. Что делать?

Замените вид сравнения «Содержит» на «Начинается с», задайте минимальную длину строки поиска и не запускайте отбор на каждое нажатие клавиши. Если этого недостаточно, рассмотрите индексирование нужного реквизита в конфигураторе.

Как вернуть стандартный вид списка после неудачной настройки?

Откройте форму списка и выберите «Ещё → Установить стандартные настройки». Это сбросит отборы, порядок колонок и параметры поиска к виду, заложенному разработчиком конфигурации, без влияния на сами данные.

Нужны ли права администратора, чтобы добавить поле поиска?

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