Отборы в 1С 8.3: от строки поиска до программного фильтра
Содержание
Чтобы установить фильтр в 1С 8.3, откройте список и наберите значение в строке поиска над таблицей — это самый быстрый отбор. Для точного условия откройте меню Ещё и выберите Расширенный поиск (Alt+F). Для нескольких условий сразу настройте отбор через команду настройки списка в том же меню Ещё.
Способ выбирают по задаче. Нужно на минуту найти один документ — хватит поиска. Нужно каждый день видеть только своих контрагентов — настройте отбор списка, он запомнится. Нужна выборка в отчёте — задайте отбор в его настройках. А если условие сложное и повторяется, пишут запрос или код. Всё ниже относится к платформе 8.3 с интерфейсом «Такси» и работает одинаково в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11: это механизм платформы, а не конкретной конфигурации.
Как устроена фильтрация в 1С: поиск, отбор и условие
В 1С есть три разных механизма. Их часто путают, отсюда и вопрос «куда делись документы».
| Механизм | Где живёт | Что делает | Запоминается |
|---|---|---|---|
| 🔍 Поиск | строка над списком | ищет текст во всех видимых колонках | нет, сбрасывается |
| 🎯 Расширенный поиск | Ещё → Расширенный поиск | одно условие по одной колонке | нет |
| ⚙️ Отбор списка | настройки списка | любое число условий, логика И/ИЛИ/НЕ | да, для пользователя |
| 📊 Отбор отчёта | настройки отчёта | ограничивает данные отчёта | да, в варианте отчёта |
| 💻 Условие запроса | секция ГДЕ или параметры | выборка на уровне базы | в тексте запроса |
Списки справочников, документов и журналов в 8.3 — это динамические списки. Их отбор построен на системе компоновки данных (СКД), той же, что и в отчётах. Поэтому окно отбора в списке и в отчёте выглядит почти одинаково, и навык переносится один в один.
У каждого условия отбора есть флажок слева. Снятый флажок выключает условие, но не удаляет его. Удобно держать заготовки и включать их по мере надобности.
Быстрый отбор в списке справочника или документа
Строка поиска
- Откройте список, например
Справочники → КонтрагентыилиПродажи → Реализация (акты, накладные). - Поставьте курсор в поле поиска в правом верхнем углу списка или нажмите
Ctrl+F. - Введите часть названия, ИНН, номер или сумму и нажмите
Enter.
Список покажет строки, где совпадение есть хотя бы в одной видимой колонке. Чтобы вернуть всё, очистите поле или нажмите Ctrl+Q — это отмена поиска.
Поиск идёт только по колонкам, которые выведены на экран. Если ИНН скрыт, по ИНН ничего не найдётся. Выведите колонку через настройку формы (Ещё → Изменить форму) или используйте отбор из следующего раздела.
Расширенный поиск по одной колонке
- Встаньте на ячейку нужной колонки, например «Контрагент».
- Нажмите
Alt+Fили выберитеЕщё → Расширенный поиск. - В окне уже стоит поле текущей колонки. Укажите значение и вариант сравнения: по началу строки, по любой части или точное совпадение.
- Нажмите
Найти.
Так удобно отобрать все реализации одного контрагента: встали на его имя в любой строке, Alt+F, Найти.
Готовые поля отбора над списком
Во многих типовых списках над таблицей уже стоят поля быстрого отбора. В списках документов Бухгалтерии 3.0 это обычно «Организация» и «Контрагент», в кадровых списках ЗУП — организация и подразделение. Выбрали значение — список сразу сузился. Состав полей зависит от конкретного списка, но принцип один: пустое поле — отбора нет.
Отбор по периоду
У списков документов есть команда Ещё → Установить период. Она показывает документы только за выбранный интервал. Это не то же самое, что поиск по дате: период живёт отдельно и сохраняется, пока вы его не сбросите.
Отбор через настройки списка: несколько условий сразу
Когда условий больше одного или их нужно сохранить, работайте в настройках списка.
- В списке откройте меню
Ещёи выберите команду настройки списка. - Перейдите на вкладку
Отбор. - Слева раскройте дерево доступных полей и перетащите поле вправо (или выделите и нажмите стрелку переноса).
- В колонке вида сравнения выберите условие, в колонке значения — что искать.
- Нажмите
Завершить редактированиеилиOK.
Виды сравнения, которые реально нужны
- ✅ Равно / Не равно — точное значение: конкретный контрагент, склад, статья.
- 📋 В списке / Не в списке — несколько значений сразу, например три склада из десяти.
- 🗂️ В группе / Не в группе — элемент и всё, что лежит в папке справочника. Для иерархических справочников это главный вариант.
- 🔤 Содержит / Не содержит — часть строки, например «ООО» в наименовании или «возврат» в комментарии.
- ⬜ Заполнено / Не заполнено — найти документы без договора или контрагентов без ИНН.
- 📈 Больше, Меньше, Больше или равно, Меньше или равно — суммы, количества, даты.
Отбор по реквизиту реквизита
Поля в дереве слева раскрываются плюсиком. Раскройте «Контрагент» — внутри будут его ИНН, КПП, основной договор и другие реквизиты. Так можно отобрать реализации по ИНН покупателя или по региону, не выводя эти данные в список. Это один из самых недооценённых приёмов.
Группы условий И, ИЛИ, НЕ
По умолчанию все условия соединяются через «И»: документ должен подойти под каждое. Если нужно «или», добавьте в отборе группу ИЛИ и перетащите условия в неё.
Пример: показать реализации, где сумма больше 100 000 или покупатель из папки «Ключевые клиенты». Без группы ИЛИ список покажет только крупные продажи ключевым клиентам, то есть пересечение.
Фильтры в отчётах и обработках
Отчёты на СКД (оборотно-сальдовая ведомость, анализ субконто, универсальный отчёт, большинство отчётов ЗУП и УТ) фильтруются так же, как списки, только в своих настройках.
- Откройте отчёт.
- Заполните быстрые отборы в шапке, если они есть: организация, период, счёт.
- Для остального нажмите кнопку настроек отчёта и найдите блок или вкладку отборов.
- Добавьте поле, задайте вид сравнения и значение.
- Сформируйте отчёт.
Отбор и условное оформление — разные вещи
В настройках отчёта есть и отбор, и условное оформление. Отбор убирает строки из отчёта. Условное оформление их только подсвечивает. Если хотите видеть всех должников, но крупных выделить красным, нужен второй вариант.
Отбор по субконто в бухгалтерских отчётах
В оборотно-сальдовой ведомости по счёту 62 отбор по контрагенту ставится на субконто, а не на произвольное поле. Если фильтр по контрагенту дал пустой отчёт, проверьте, на какое поле он поставлен и включена ли детализация по нужному субконто.
Обработки
В типовых обработках, например в групповом изменении реквизитов, отбор задаётся в самой форме обработки: там есть свой блок условий того же вида, что и в списке. Сначала задайте отбор и посмотрите, сколько объектов попало, потом выполняйте изменение.
Групповая обработка меняет всё, что попало под отбор. Перед массовым изменением сделайте резервную копию базы и проверьте число отобранных объектов. Одно пропущенное условие — и правка уйдёт на весь справочник.
Условия в языке запросов: фильтр для продвинутых
Когда интерфейса не хватает, выборку делают запросом. Без доработки конфигурации это можно сделать в консоли запросов — внешней обработке, которую открывают через Файл → Открыть. Нужны права на открытие внешних обработок.
Пример: проведённые реализации за период, по группе контрагентов, с комментарием про возврат.
ВЫБРАТЬ
Реализация.Ссылка КАК Документ,
Реализация.Дата КАК Дата,
Реализация.Контрагент КАК Контрагент,
Реализация.СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Проведен
И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Реализация.Контрагент В ИЕРАРХИИ (&ГруппаКонтрагентов)
И Реализация.Комментарий ПОДОБНО "%возврат%"
УПОРЯДОЧИТЬ ПО
Дата
Что здесь работает:
МЕЖДУвключает обе границы. Параметр&КонецПериодапередавайте как конец дня, иначе документы последнего дня с временем после 00:00:00 выпадут.В ИЕРАРХИИберёт группу и всё вложенное. ОбычноеВвзяло бы только элементы, перечисленные явно.ПОДОБНОс%ищет подстроку. Символ%— любое число любых знаков,_— ровно один знак.
Фильтр в параметрах виртуальной таблицы
Для регистров есть приём, который сильно ускоряет запрос. Условие на измерения ставят не в ГДЕ, а в параметры виртуальной таблицы:
ВЫБРАТЬ
Остатки.Субконто1 КАК Контрагент,
Остатки.СуммаОстатокДт КАК Долг
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&НаДату,
Счет В ИЕРАРХИИ (&Счет62),
,
Организация = &Организация) КАК Остатки
В таком виде платформа сначала отбирает нужные записи, а потом считает остатки. Условие в ГДЕ применяется уже к посчитанному результату: на большой базе разница во времени может быть кратной. Само поле отбора при этом должно быть измерением регистра. Для регистра бухгалтерии второй параметр — условие на счёт, третий — виды субконто, четвёртый — условие на остальные измерения.
Где фильтр работает не так, как ждёшь
- 🕳️ «Список пустой, хотя документы есть». Чаще всего остался старый отбор, период или текст в строке поиска. Нажмите
Ctrl+Q, проверьте период и вкладку отбора в настройках списка. - 📅 Дата «Меньше или равно 31.03». Значение подставляется как 31.03 00:00:00. Документы, проведённые 31 марта днём, в выборку не попадут. Ставьте «Меньше» и 01.04 или пользуйтесь периодом списка.
- 🗂️ «Равно» вместо «В группе». Отбор «Номенклатура равно Канцтовары», где «Канцтовары» — папка, ничего не вернёт: документов на саму папку нет.
- 🔤 Опечатка в «Содержит». Латинская «с» вместо кириллической в слове выглядит так же, но не совпадает. Если поиск по тексту молчит, наберите слово заново.
- ☑️ Снятый флажок у условия. Условие видно, но не действует. Или наоборот: забытое включённое условие тихо режет список.
- 👤 Отбор «по умолчанию» от администратора. Некоторые ограничения стоят не в настройках, а в правах доступа на уровне записей. Их пользователь не снимет никакой настройкой списка — это вопрос к администратору базы.
Как сохранить фильтр и вернуться к нему
Списки
Настройки списка, включая отбор, сортировку и колонки, 1С запоминает для каждого пользователя автоматически. Закрыли и открыли список — отбор на месте. Чтобы вернуть заводской вид, используйте Ещё → Установить стандартные настройки.
Если нужно несколько наборов условий для одного списка, держите их заготовками со снятыми флажками и включайте нужный. Это работает в любой конфигурации и не требует прав администратора.
Отчёты
У отчёта вместо «сохранить фильтр» есть варианты. Настройте отборы, затем в меню Ещё сохраните вариант отчёта под понятным именем, например «ОСВ 62 — только ключевые клиенты». Вариант можно сделать доступным только себе или всем пользователям.
В БСП-конфигурациях отчёт можно отправлять по расписанию через рассылку отчётов. Рассылка берёт сохранённый вариант вместе с его отборами, так что настраивать фильтр второй раз не нужно.
Избранное
Список с настроенным отбором удобно добавить в избранное (звёздочка в заголовке формы). Он будет открываться в один клик.
Фильтр из кода: динамический список и программное управление
Если нужно, чтобы форма сама ставила отбор при открытии или по нажатию кнопки, делают доработку. В типовых конфигурациях — только через расширение, чтобы не снимать конфигурацию с поддержки. Расширения доступны с платформы 8.3.6.
Отбор у динамического списка — это коллекция элементов СКД. Платформенный способ:
&НаСервере
Процедура УстановитьОтборПоКонтрагенту(Контрагент)
Список.Отбор.Элементы.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Контрагент;
ЭлементОтбора.Использование = ЗначениеЗаполнено(Контрагент);
КонецПроцедуры
Очистить() здесь снимает все прежние отборы списка, включая пользовательские. Если нужно добавить условие, не трогая остальные, ищите и меняйте только свой элемент.
В конфигурациях на БСП то же делают одной строкой, и функция сама находит существующий элемент по полю, чтобы не плодить дубли:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "Контрагент", Контрагент,
ВидСравненияКомпоновкиДанных.Равно, , ЗначениеЗаполнено(Контрагент));
Динамический отбор через параметры
Если список построен на произвольном запросе, условие удобно заложить прямо в текст запроса через параметр, а значение менять на лету:
Список.Параметры.УстановитьЗначениеПараметра("Склад", ВыбранныйСклад);
Список перечитается сам. Это лучший вариант, когда условие касается связанной таблицы, которую нельзя выразить простым отбором по полю.
Отбор, поставленный в коде, пользователь видит в настройках списка и может снять. Чтобы скрыть условие от пользователя, его кладут в запрос динамического списка, а не в отбор.