Отборы в 1С 8.3: от строки поиска до программного фильтра

· 10 мин

Содержание

Чтобы установить фильтр в 1С 8.3, откройте список и наберите значение в строке поиска над таблицей — это самый быстрый отбор. Для точного условия откройте меню Ещё и выберите Расширенный поиск (Alt+F). Для нескольких условий сразу настройте отбор через команду настройки списка в том же меню Ещё.

Способ выбирают по задаче. Нужно на минуту найти один документ — хватит поиска. Нужно каждый день видеть только своих контрагентов — настройте отбор списка, он запомнится. Нужна выборка в отчёте — задайте отбор в его настройках. А если условие сложное и повторяется, пишут запрос или код. Всё ниже относится к платформе 8.3 с интерфейсом «Такси» и работает одинаково в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11: это механизм платформы, а не конкретной конфигурации.

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

В 1С есть три разных механизма. Их часто путают, отсюда и вопрос «куда делись документы».

МеханизмГде живётЧто делаетЗапоминается
🔍 Поискстрока над спискомищет текст во всех видимых колонкахнет, сбрасывается
🎯 Расширенный поискЕщё → Расширенный поискодно условие по одной колонкенет
⚙️ Отбор списканастройки спискалюбое число условий, логика И/ИЛИ/НЕда, для пользователя
📊 Отбор отчётанастройки отчётаограничивает данные отчётада, в варианте отчёта
💻 Условие запросасекция ГДЕ или параметрывыборка на уровне базыв тексте запроса

Списки справочников, документов и журналов в 8.3 — это динамические списки. Их отбор построен на системе компоновки данных (СКД), той же, что и в отчётах. Поэтому окно отбора в списке и в отчёте выглядит почти одинаково, и навык переносится один в один.

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

Быстрый отбор в списке справочника или документа

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

  1. Откройте список, например Справочники → Контрагенты или Продажи → Реализация (акты, накладные).
  2. Поставьте курсор в поле поиска в правом верхнем углу списка или нажмите Ctrl+F.
  3. Введите часть названия, ИНН, номер или сумму и нажмите Enter.

Список покажет строки, где совпадение есть хотя бы в одной видимой колонке. Чтобы вернуть всё, очистите поле или нажмите Ctrl+Q — это отмена поиска.

Поиск идёт только по колонкам, которые выведены на экран. Если ИНН скрыт, по ИНН ничего не найдётся. Выведите колонку через настройку формы (Ещё → Изменить форму) или используйте отбор из следующего раздела.

Расширенный поиск по одной колонке

  1. Встаньте на ячейку нужной колонки, например «Контрагент».
  2. Нажмите Alt+F или выберите Ещё → Расширенный поиск.
  3. В окне уже стоит поле текущей колонки. Укажите значение и вариант сравнения: по началу строки, по любой части или точное совпадение.
  4. Нажмите Найти.

Так удобно отобрать все реализации одного контрагента: встали на его имя в любой строке, Alt+F, Найти.

Готовые поля отбора над списком

Во многих типовых списках над таблицей уже стоят поля быстрого отбора. В списках документов Бухгалтерии 3.0 это обычно «Организация» и «Контрагент», в кадровых списках ЗУП — организация и подразделение. Выбрали значение — список сразу сузился. Состав полей зависит от конкретного списка, но принцип один: пустое поле — отбора нет.

Отбор по периоду

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

Отбор через настройки списка: несколько условий сразу

Когда условий больше одного или их нужно сохранить, работайте в настройках списка.

  1. В списке откройте меню Ещё и выберите команду настройки списка.
  2. Перейдите на вкладку Отбор.
  3. Слева раскройте дерево доступных полей и перетащите поле вправо (или выделите и нажмите стрелку переноса).
  4. В колонке вида сравнения выберите условие, в колонке значения — что искать.
  5. Нажмите Завершить редактирование или OK.

Виды сравнения, которые реально нужны

  • ✅ Равно / Не равно — точное значение: конкретный контрагент, склад, статья.
  • 📋 В списке / Не в списке — несколько значений сразу, например три склада из десяти.
  • 🗂️ В группе / Не в группе — элемент и всё, что лежит в папке справочника. Для иерархических справочников это главный вариант.
  • 🔤 Содержит / Не содержит — часть строки, например «ООО» в наименовании или «возврат» в комментарии.
  • ⬜ Заполнено / Не заполнено — найти документы без договора или контрагентов без ИНН.
  • 📈 Больше, Меньше, Больше или равно, Меньше или равно — суммы, количества, даты.

Отбор по реквизиту реквизита

Поля в дереве слева раскрываются плюсиком. Раскройте «Контрагент» — внутри будут его ИНН, КПП, основной договор и другие реквизиты. Так можно отобрать реализации по ИНН покупателя или по региону, не выводя эти данные в список. Это один из самых недооценённых приёмов.

Группы условий И, ИЛИ, НЕ

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

Пример: показать реализации, где сумма больше 100 000 или покупатель из папки «Ключевые клиенты». Без группы ИЛИ список покажет только крупные продажи ключевым клиентам, то есть пересечение.

Фильтры в отчётах и обработках

Отчёты на СКД (оборотно-сальдовая ведомость, анализ субконто, универсальный отчёт, большинство отчётов ЗУП и УТ) фильтруются так же, как списки, только в своих настройках.

  1. Откройте отчёт.
  2. Заполните быстрые отборы в шапке, если они есть: организация, период, счёт.
  3. Для остального нажмите кнопку настроек отчёта и найдите блок или вкладку отборов.
  4. Добавьте поле, задайте вид сравнения и значение.
  5. Сформируйте отчёт.

Отбор и условное оформление — разные вещи

В настройках отчёта есть и отбор, и условное оформление. Отбор убирает строки из отчёта. Условное оформление их только подсвечивает. Если хотите видеть всех должников, но крупных выделить красным, нужен второй вариант.

Отбор по субконто в бухгалтерских отчётах

В оборотно-сальдовой ведомости по счёту 62 отбор по контрагенту ставится на субконто, а не на произвольное поле. Если фильтр по контрагенту дал пустой отчёт, проверьте, на какое поле он поставлен и включена ли детализация по нужному субконто.

Обработки

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

Групповая обработка меняет всё, что попало под отбор. Перед массовым изменением сделайте резервную копию базы и проверьте число отобранных объектов. Одно пропущенное условие — и правка уйдёт на весь справочник.

Какой фильтр вам нужен?

Условия в языке запросов: фильтр для продвинутых

Когда интерфейса не хватает, выборку делают запросом. Без доработки конфигурации это можно сделать в консоли запросов — внешней обработке, которую открывают через Файл → Открыть. Нужны права на открытие внешних обработок.

Пример: проведённые реализации за период, по группе контрагентов, с комментарием про возврат.

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

Что здесь работает:

  • МЕЖДУ включает обе границы. Параметр &КонецПериода передавайте как конец дня, иначе документы последнего дня с временем после 00:00:00 выпадут.
  • В ИЕРАРХИИ берёт группу и всё вложенное. Обычное В взяло бы только элементы, перечисленные явно.
  • ПОДОБНО с % ищет подстроку. Символ % — любое число любых знаков, _ — ровно один знак.

Фильтр в параметрах виртуальной таблицы

Для регистров есть приём, который сильно ускоряет запрос. Условие на измерения ставят не в ГДЕ, а в параметры виртуальной таблицы:

ВЫБРАТЬ
    Остатки.Субконто1 КАК Контрагент,
    Остатки.СуммаОстатокДт КАК Долг
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
        &НаДату,
        Счет В ИЕРАРХИИ (&Счет62),
        ,
        Организация = &Организация) КАК Остатки

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

Где фильтр работает не так, как ждёшь

  • 🕳️ «Список пустой, хотя документы есть». Чаще всего остался старый отбор, период или текст в строке поиска. Нажмите Ctrl+Q, проверьте период и вкладку отбора в настройках списка.
  • 📅 Дата «Меньше или равно 31.03». Значение подставляется как 31.03 00:00:00. Документы, проведённые 31 марта днём, в выборку не попадут. Ставьте «Меньше» и 01.04 или пользуйтесь периодом списка.
  • 🗂️ «Равно» вместо «В группе». Отбор «Номенклатура равно Канцтовары», где «Канцтовары» — папка, ничего не вернёт: документов на саму папку нет.
  • 🔤 Опечатка в «Содержит». Латинская «с» вместо кириллической в слове выглядит так же, но не совпадает. Если поиск по тексту молчит, наберите слово заново.
  • ☑️ Снятый флажок у условия. Условие видно, но не действует. Или наоборот: забытое включённое условие тихо режет список.
  • 👤 Отбор «по умолчанию» от администратора. Некоторые ограничения стоят не в настройках, а в правах доступа на уровне записей. Их пользователь не снимет никакой настройкой списка — это вопрос к администратору базы.

Как сохранить фильтр и вернуться к нему

Списки

Настройки списка, включая отбор, сортировку и колонки, 1С запоминает для каждого пользователя автоматически. Закрыли и открыли список — отбор на месте. Чтобы вернуть заводской вид, используйте Ещё → Установить стандартные настройки.

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

Отчёты

У отчёта вместо «сохранить фильтр» есть варианты. Настройте отборы, затем в меню Ещё сохраните вариант отчёта под понятным именем, например «ОСВ 62 — только ключевые клиенты». Вариант можно сделать доступным только себе или всем пользователям.

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

Избранное

Список с настроенным отбором удобно добавить в избранное (звёздочка в заголовке формы). Он будет открываться в один клик.

Фильтр из кода: динамический список и программное управление

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

Отбор у динамического списка — это коллекция элементов СКД. Платформенный способ:

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

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

    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Контрагент");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Контрагент;
    ЭлементОтбора.Использование  = ЗначениеЗаполнено(Контрагент);

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

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

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

ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
    Список, "Контрагент", Контрагент,
    ВидСравненияКомпоновкиДанных.Равно, , ЗначениеЗаполнено(Контрагент));

Динамический отбор через параметры

Если список построен на произвольном запросе, условие удобно заложить прямо в текст запроса через параметр, а значение менять на лету:

Список.Параметры.УстановитьЗначениеПараметра("Склад", ВыбранныйСклад);

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

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

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

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