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