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

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

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

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

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

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

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

Где в 1С применяется отбор и как он устроен

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

Отборы работают на четырёх уровнях. Первый — формы списков документов, справочников и регистров, где отбор настраивает сам пользователь. Второй — отчёты, где условия задаются в настройках перед формированием. Третий — динамические списки, где разработчик может зашить отбор в запрос. Четвёртый — язык запросов 1С, где отбор задаётся предложением ГДЕ и выполняется на стороне сервера СУБД.

Важно понимать разницу между отбором и поиском. Поиск по строке (Ctrl+F или строка поиска в списке) ищет вхождение текста в отображаемых колонках и работает медленнее на больших объёмах. Отбор же накладывает условие на уровне данных — список физически получает с сервера только подходящие записи, поэтому на больших базах отбор всегда предпочтительнее.

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

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

Нажмите «Добавить новый элемент» и выберите поле из списка доступных. Для документов доступны не только реквизиты шапки (дата, контрагент, организация, сумма), но и поля связанных объектов — например, «Контрагент.Группа» или «Договор.Валюта». Затем укажите вид сравнения и значение. Для отбора по нескольким значениям одного поля используйте вид сравнения «В списке» и добавьте нужные элементы в список значений.

Если условий несколько и среди них есть альтернативные, используйте группировку: кнопка «Сгруппировать условия» позволяет создать группу «ИЛИ» или «НЕ». Типичный пример — показать документы, где контрагент равен одному из двух значений И сумма больше заданной: сначала группа «ИЛИ» по контрагентам, затем отдельное условие по сумме.

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

Быстрый отбор без открытия настроек

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

Как настроить отбор в отчёте

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

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

Готовый набор настроек сохраните как вариант отчёта: «Ещё → Сохранить вариант отчёта». Тогда в следующий раз сложный отбор из пяти условий не придётся собирать заново. Варианты можно делать личными или общедоступными — последнее требует соответствующих прав.

Отбор в динамических списках и его ограничения

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

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

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

Отбор в запросе: предложение ГДЕ

Для тех, кто работает с консолью запросов или пишет код, отбор задаётся предложением ГДЕ (WHERE). Условия пишутся на языке запросов 1С и выполняются на сервере СУБД, что самый быстрый способ получить нужные данные из больших таблиц.

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

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

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

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

Второе — пограничные записи. Найдите запись, которая должна попасть в отбор, и запись, которая должна быть исключена, и убедитесь, что первая есть, а второй нет. Третье — снимите отбор и сравните общее количество: это помогает понять, сколько данных скрыто условием, и не потерялись ли нужные записи из-за слишком строгого условия.

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

Контроль результата отбора

Список после установки условия
Норма

Показывает только записи, соответствующие условию

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

Список не изменился или стал пустым

Панель активных отборов
Норма

Условие отображается и помечено как активное

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

Условия нет или флажок снят

Заведомо подходящая запись
Норма

Присутствует в отфильтрованном списке

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

Отсутствует — условие слишком строгое или поле неверное

Итоги отчёта
Норма

Сходятся с контрольной цифрой по суженной выборке

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

Итоги совпадают с отчётом без отбора

Типичные ошибки при работе с отборами

Самая частая ошибка — путать «Содержит» и «Равно» для строковых полей. Условие «Наименование Равно Молоко» не найдёт «Молоко 3,2%», а условие «Содержит» найдёт и «Коктейль молочный». Для точного поиска по ссылочным полям (контрагент, номенклатура) всегда используйте «Равно» или «В списке» с выбором конкретных элементов.

Вторая ошибка — неявное «И» там, где нужно «ИЛИ». Два условия «Контрагент = А» и «Контрагент = Б», добавленные подряд, дадут пустой результат, потому что один документ не может иметь двух контрагентов одновременно. Для перечисления используйте «В списке» или группу «ИЛИ».

Третья группа ошибок связана с датами: условие «Дата = 15.03» отсекает документы, если у даты есть время и оно не 00:00:00. Для периодов используйте вид сравнения «В периоде» или диапазон «Больше или равно / Меньше», помня, что конец дня — 23:59:59.

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

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

Отбор строится из поля, вида сравнения и значения; условия объединяются по «И», для альтернатив нужна группа «ИЛИ» или «В списке». В списках отбор настраивается через «Настроить список», в отчётах — через настройки варианта, в запросах — через ГДЕ с параметрами. Перед использованием результата проверяйте панель активных отборов и контрольные записи.

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

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

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

Почему в настройке отбора нет нужного поля?

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

Можно ли отобрать записи, где поле не заполнено?

Да. Используйте вид сравнения «Не заполнено» (или «Заполнено» для обратной задачи) — он находит записи с пустым значением поля. Для ссылочных полей альтернатива — условие «Равно» с пустой ссылкой, но «Не заполнено» надёжнее, поскольку корректно обрабатывает и NULL, и пустые ссылки.

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

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

Отбор в списке и поиск по строке — что выбрать?

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

Опасен ли отбор для данных в базе?

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