Отбор в СКД 1С задаётся в настройках схемы компоновки на вкладке «Отбор» — для всего отчёта или для отдельной группировки. Элемент отбора состоит из поля (левое значение), вида сравнения и значения (правое значение); несколько элементов по умолчанию объединяются через «И», а для «ИЛИ» и «НЕ» используются группы отбора. Чтобы пользователь мог менять отбор сам, элемент включают в пользовательские настройки с режимом «Быстрый доступ».
Ниже разберу все уровни, на которых живут отборы: фиксированный отбор варианта, отбор на группировке (фильтр по итогам), пользовательские отборы и установку отбора программно — в отчёте и в динамическом списке формы.
Как устроен элемент отбора в СКД
В конструкторе схемы откройте «Настройки», выделите в структуре корневой элемент «Отчёт» или нужную группировку и перейдите на вкладку «Отбор». Добавить поле можно двойным щелчком из списка доступных полей, перетаскиванием или кнопкой «Добавить» на командной панели. Только через командную панель добавляется группа отбора — «Группа И», «Группа ИЛИ», «Группа НЕ».
Набор доступных видов сравнения зависит от типа поля:
| Тип поля | Основные виды сравнения |
|---|---|
| Число, дата | Равно, Не равно, Больше, Больше или равно, Меньше, Меньше или равно, В списке, Заполнено |
| Строка | Всё для чисел плюс Содержит, Начинается с, Подобно (соответствует шаблону) и их отрицания |
| Ссылка | Равно, Не равно, В списке, В группе, В группе из списка, Заполнено и их отрицания |
«В группе» для иерархических справочников означает «сам элемент или любой его потомок» — это то, что обычно нужно пользователю, когда он выбирает группу номенклатуры.

Группы «И» и «ИЛИ»
Элементы верхнего уровня всегда соединяются через «И». Если нужно условие «склад Основной ИЛИ количество больше 100», создайте «Группу ИЛИ» и перетащите оба элемента внутрь. Группы можно вкладывать друг в друга, собирая выражения любой сложности.
Фиксированный отбор: когда его лучше перенести в запрос
Самый простой случай — отбор, который включён в варианте отчёта и действует всегда. Но пользователь с правом изменять вариант может его снять. Если ограничение принципиальное (например, отчёт по одной организации или без помеченных на удаление документов), я пишу его прямо в тексте запроса — так его не обойти через настройки, и запрос сразу читает меньше данных.
Правило, которым пользуюсь на проектах:
- в запрос — то, что пользователь не должен менять никогда;
- в параметры — то, что задаёт рамки выборки (период, организация) и обязательно к заполнению;
- в отбор — то, что пользователь включает и выключает по ситуации.
Параметры СКД — отдельная тема, о ней у меня есть подробная статья; здесь сосредоточимся на отборах.
Отбор на группировке: фильтр по итогам
Главное преимущество отборов СКД перед условиями запроса — их можно наложить на конкретную группировку. Такой отбор применяется после расчёта итогов этой группировки.
Пример: отчёт по продажам с группировкой «Номенклатура» и ресурсом «Количество». Нужно скрыть позиции, у которых итоговое количество за период меньше 15. В запросе это условие поставить нельзя: на уровне детальных записей итога ещё нет (можно было бы через ИМЕЮЩИЕ, но тогда теряется гибкость). Решение:
- В структуре настроек выделите группировку «Номенклатура».
- На вкладке «Отбор» переключатель с «Отчёт» поставьте на эту группировку.
- Добавьте элемент: поле «Количество», вид сравнения «Больше или равно», значение 15.
Строки, не прошедшие отбор, исчезнут вместе с вложенными записями, а общие итоги отчёта пересчитаются по оставшимся.
Убираем строку начального остатка в ведомости
Типичная задача в оборотных ведомостях с группировкой по регистратору. Если дата начала периода не совпадает с самой ранней датой движений, СКД выводит служебную строку с пустым регистратором — в ней сидит начальный остаток. Чтобы её убрать:
- На группировке «Регистратор» добавьте отбор «Регистратор» — «Заполнено».
- На вкладке «Другие настройки» этой же группировки установите параметр «Выводить отбор» в значение «Не выводить», иначе в шапке группировки появится текст условия.
Пользовательские отборы: быстрый доступ и обычный режим
Вариант отчёта — это каркас, который настраивается один раз. Отборы же пользователи меняют постоянно, поэтому давать им для этого «Изменить вариант» неправильно. Правильный путь — пользовательские настройки.
Порядок для отбора по группе номенклатуры:
- На уровне «Отчёт» добавьте элемент отбора «Номенклатура», вид сравнения «В группе».
- Снимите флажок использования — по умолчанию отбор выключен.
- Откройте свойства элемента пользовательской настройки (кнопка на командной панели отбора) и включите «Включать в пользовательские настройки».
- Режим редактирования — «Быстрый доступ», если поле должно быть прямо на форме отчёта, или «Обычный», если достаточно окна «Настройки».

В режиме «Предприятие» пользователь увидит флажок, вид сравнения и поле значения.
Отбор-флажок с фиксированным условием
Иногда нужно, чтобы условие было жёстким, а пользователь лишь включал или выключал его: «Только просроченные», «Без услуг». Для этого заполните у элемента поле «Представление пользовательской настройки». Тогда на форму выводится только флажок с этим текстом, а вид сравнения и значение остаются скрытыми.
Если нужно лишь переименовать поле в отборе (например, «Номенклатура» → «Товар»), используйте свойство «Представление» самого элемента — условие при этом останется редактируемым.
Все отборы — в пользовательские настройки
Можно отдать пользователю не отдельные элементы, а весь отбор целиком: через «Свойства элемента пользовательских настроек» на уровне отчёта или группировки включите сам отбор. Тогда пользователь сможет добавлять собственные условия по любым доступным полям. Это удобно для аналитиков, но в отчётах для массовых пользователей я ограничиваюсь двумя-тремя заранее подготовленными отборами в быстром доступе.
Установка отбора программно в отчёте
Чтобы подставить отбор перед формированием (например, по текущей организации или по значению из внешней обработки), работайте с настройками компоновщика. В БСП для этого есть готовые функции модуля ОбщегоНазначенияКлиентСервер.
// Модуль объекта отчёта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Отбор на уровне всего отчёта: склад из параметров сеанса или констант
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
Настройки.Отбор,
"Склад",
ОсновнойСклад(),
ВидСравненияКомпоновкиДанных.Равно);
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедурыОбратите внимание на порядок параметров в БСП: сначала область отбора, имя поля, затем правое значение, и только потом вид сравнения. Функция ищет существующий элемент по полю, обновляет его, а если не нашла — добавляет новый.
Без БСП код выглядит так — заодно видно, как собрать группу «ИЛИ»:
// Добавляет в отбор условие: Склад = Склад ИЛИ Количество > МинимальноеКоличество.
Процедура ДобавитьОтборСкладИлиКоличество(Отбор, Склад, МинимальноеКоличество)
ГруппаИли = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаИли.Использование = Истина;
ЭлементСклад = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементСклад.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад");
ЭлементСклад.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементСклад.ПравоеЗначение = Склад;
ЭлементСклад.Использование = Истина;
ЭлементКоличество = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементКоличество.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Количество");
ЭлементКоличество.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементКоличество.ПравоеЗначение = МинимальноеКоличество;
ЭлементКоличество.Использование = Истина;
КонецПроцедурыОтбор на группировке программно ставится так же, только областью служит свойство Отбор элемента структуры, например Настройки.Структура[0].Отбор (если первый элемент — ГруппировкаКомпоновкиДанных). Надёжнее искать группировку по имени, а не по индексу: пользователь может поменять структуру варианта.
Отборы в динамических списках
Динамический список тоже построен на СКД, и у него есть свойство Отбор типа ОтборКомпоновкиДанных. Задать отбор можно двумя способами.
Через параметр формы «Отбор». При открытии формы списка передаётся структура: ключ — имя поля, значение — правая часть условия. Для одиночного значения вид сравнения будет «Равно», для массива или списка значений — «В списке».
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", Новый Структура("Контрагент", ВыбранныйКонтрагент));
ОткрытьФорму("Документ.РеализацияТоваров.ФормаСписка", ПараметрыФормы);Такой отбор попадает в фиксированные настройки компоновщика: пользователь его не видит и снять не может. Ограничение — только «Равно» и «В списке», без групп «ИЛИ».
Через свойство списка в модуле формы. Здесь доступны все виды сравнения:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Параметры.ИсключаемыйЭлемент) Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список,
"Ссылка",
Параметры.ИсключаемыйЭлемент,
ВидСравненияКомпоновкиДанных.НеРавно,
,
Истина,
РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
КонецЕсли;
КонецПроцедурыРежим отображения Недоступный скрывает отбор от пользователя, БыстрыйДоступ выводит его в панель пользовательских настроек.
Пользовательский отбор на форме списка
Чтобы у списка появилась панель с отборами, как в отчёте:
- В свойствах реквизита динамического списка откройте «Настроить список», добавьте элемент отбора и включите его в пользовательские настройки с режимом «Быстрый доступ».
- На форме создайте обычную группу для настроек.
- У элемента формы, связанного со списком, укажите эту группу в свойстве «Группа пользовательских настроек».
Типичные ошибки
- Отбор по полю, которого нет в наборе. В списке доступных полей видны только поля наборов и вычисляемые поля. Если поле добавлено в запрос, но схема не пересохранилась с автозаполнением, отбор по нему недоступен.
- Отбор вместо параметра по периоду. Отбор по полю «Период» накладывается на уже выбранные данные; виртуальная таблица остатков всё равно посчитается на дату параметра. Период задавайте параметрами.
- Неверный порядок аргументов БСП. В
УстановитьЭлементОтборатретий параметр — значение, четвёртый — вид сравнения. Перепутать легко, ошибки при этом не будет — просто отбор не сработает. - Изменение настроек без загрузки обратно.
ПолучитьНастройки()возвращает копию; изменения нужно вернуть черезЗагрузитьНастройки(). - Привязка к индексу группировки.
Структура[0]ломается, как только пользователь добавит группировку выше.
Если в типовом отчёте нужно добавить отбор, не снимая конфигурацию с поддержки, это делается расширением конфигурации. Сложные отчёты с несколькими уровнями отборов и расшифровками я собираю в рамках разработки отчётов на СКД.
Коротко
- Отбор в СКД 1С задаётся на уровне отчёта или конкретной группировки; элементы верхнего уровня объединяются через «И», для «ИЛИ» нужны группы.
- Отбор на группировке работает по рассчитанным итогам — так отсекают строки с маленькими суммами или служебную строку начального остатка.
- Пользователю отдавайте отборы через пользовательские настройки в режиме «Быстрый доступ», а не через изменение варианта.
- Программно отбор удобно ставить функциями БСП
УстановитьЭлементОтбораиУстановитьЭлементОтбораДинамическогоСписка, помня о порядке параметров. - То, что нельзя менять никогда, пишите в текст запроса.




