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

Быстрый старт · 10 мин

Как работает фильтр в 1С: отборы, поиск и настройка условий

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

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

В типовых конфигурациях на управляемых формах (1С:Предприятие 8.3) фильтрация работает на уровне динамического списка: программа формирует запрос к базе данных с условием «ГДЕ» и показывает только подходящие записи. Это значит, что отбор выполняется на сервере, а не визуально скрывает строки — при больших объёмах данных это важно для скорости работы.

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

Как устроен механизм отбора в 1С

Когда вы задаёте условие фильтра, платформа преобразует его в запрос к СУБД. Например, отбор «Организация = ООО Ромашка» превращается в условие WHERE в SQL-запросе. Поэтому фильтрация в 1С — это не визуальное скрытие строк, а выборка на стороне сервера.

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

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

Быстрый поиск и кнопка «Найти» в списках

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

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

Учтите: поиск по подстроке («Содержит») не использует индекс и на таблицах с сотнями тысяч записей может выполняться десятки секунд. Если знаете начало значения, выбирайте «Начинается с» — такой отбор работает значительно быстрее.

Настройка списка: произвольные условия отбора

Когда стандартного поиска недостаточно, откройте «Ещё → Настроить список» (в некоторых конфигурациях — «Все действия → Настроить список»). Здесь доступны три вкладки: «Отбор», «Сортировка» и «Группировка».

На вкладке «Отбор» добавьте условие: выберите поле слева, вид сравнения и значение. Доступны условия «Равно», «Не равно», «В списке», «В группе», «Больше», «Меньше», «Заполнено» и другие. Несколько условий по умолчанию объединяются по «И» — запись должна удовлетворять всем одновременно.

Для сложных сочетаний используйте группировку условий: через контекстное меню можно создать «Группу ИЛИ» и поместить в неё часть условий. Например: «Статус = Проведён И (Склад = Основной ИЛИ Склад = Резервный)». Это закрывает большинство практических сценариев без программирования.

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

Фильтры в отчётах на СКД

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

Ключевое отличие от отбора в списке: фильтр применяется при формировании отчёта, а не к уже загруженным строкам. Если отчёт формируется долго, сначала сузьте период и добавьте отборы — это уменьшит объём обрабатываемых данных.

В режиме «Быстрые настройки» доступны только те отборы, которые разработчик вынес наверх. Переключитесь на «Расширенные настройки», чтобы увидеть полный список полей. Полезный приём — параметр «Период»: он фильтрует данные на уровне запроса и работает эффективнее, чем отбор по полю «Дата».

Где какой фильтр использовать

Строка быстрого поиска

Подходит для разового поиска по наименованию или номеру; не поддерживает сложные условия

Настройка списка

Оптимальна для регулярных отборов в журналах; условия можно сохранить как вариант

Отбор в отчёте СКД

Нужен для аналитики и анализа по многим измерениям; применяется при формировании

Программный отбор в запросе

Для разработчиков: максимальная гибкость, но требует изменения конфигурации или внешней обработки

Отборы в формах выбора и связанные фильтры

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

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

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

Фильтры для разработчиков: запросы и динамические списки

В коде отбор задаётся через свойство «Отбор» динамического списка или напрямую в тексте запроса. Для динамического списка используется коллекция элементов отбора, где программно добавляются условия с указанием поля, вида сравнения и значения.

В запросах фильтрация — это секция ГДЕ. Важные правила: используйте параметры вместо подстановки строк (защита от ошибок и инъекций), накладывайте условия на индексированные поля, а для виртуальных таблиц регистров передавайте отборы в параметры виртуальной таблицы, а не в общее условие — это критично для производительности.

Для отбора «в списке значений» передавайте массив или список значений параметром и используйте оператор В. Условие с ПОДОБНО (аналог «Содержит») применяйте осознанно: с шаблоном «%текст%» индекс не используется.

bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка, Номер, Дата
|ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Организация = &Организация
| И Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("Организация", Организация);

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

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

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

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

Типичные ошибки при работе с фильтрами
01
Забытый сохранённый отбор — список кажется пустым, хотя данные есть; снимите настройки через «Установить стандартные настройки»
02
Отбор по строке с «Равно» вместо «Содержит» — запись не находится из-за лишнего пробела или регистра
03
Одновременный отбор по периоду журнала и по дате в настройках — условия перемножаются, и часть документов отсекается
04
Поиск «Содержит» по большой таблице — долгое ожидание; используйте «Начинается с» или точные поля
Контрольные точки

Как проверить, что фильтр работает правильно

Количество записей в списке
Норма

Число строк соответствует ожиданиям при заданных условиях

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

Список пуст или подозрительно мал — проверьте активные отборы и период

Вид сравнения в условии
Норма

Для точных значений — «Равно», для части текста — «Содержит»

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

«Равно» при поиске по фрагменту текста даёт пустой результат

Скорость применения отбора
Норма

Список обновляется за секунды

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

Отбор выполняется десятки секунд — условие по неиндексированному полю

Часто задаваемые вопросы

Как сбросить все фильтры в списке 1С?

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

Почему поиск «Содержит» работает долго?

Условие по подстроке не может использовать индекс, поэтому база просматривает все записи таблицы. В больших базах это занимает заметное время. Используйте «Начинается с», точные поля (номер, код) или полнотекстовый поиск, если он включён администратором.

Можно ли сохранить настройку отбора, чтобы не задавать её каждый раз?

Да. В диалоге настройки списка нажмите «Сохранить настройки» и задайте имя варианта. В дальнейшем сохранённый вариант выбирается из списка настроек. В отчётах на СКД аналогично сохраняются варианты отчёта с отборами.

Как отобрать записи, где поле пустое?

В настройке списка или отчёта добавьте условие по нужному полю и выберите вид сравнения «Не заполнено» (или «Заполнено» для обратной задачи). Это надёжнее, чем сравнение с пустой строкой, которое не всегда срабатывает для ссылочных полей.

Чем отбор в отчёте отличается от параметра «Период»?

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

Можно ли фильтровать список по нескольким значениям одного поля?

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

Итог

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

Фильтр в 1С — это отбор на уровне запроса к базе. Для быстрого поиска используйте строку поиска и «Найти», для регулярных условий — «Настроить список» с сохранением вариантов, для аналитики — отборы и параметры в отчётах СКД. Если данные «пропали», первым делом проверяйте активные отборы и период.