Отбор для пользователя в отчёте на СКД: схема, режимы, варианты

· 9 мин

Содержание

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

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

Что проверить в схеме компоновки до настройки отбора

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

Набор данных. Поле должно быть в запросе и на закладке Наборы данных. При автозаполнении полей СКД добавляет их сама, при ручной настройке — проверьте список.

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

Ссылочные реквизиты. Отбор можно ставить не только по полю, но и по его реквизиту через точку: Номенклатура.ВидНоменклатуры, Контрагент.ИНН. Отдельно добавлять реквизит в запрос не нужно.

💡 Если запрос написан вручную, а отбор должен попадать внутрь запроса до группировки, используйте расширение языка запросов СКД в фигурных скобках: {ГДЕ Номенклатура.*, Склад.*}. Тогда условие сработает на уровне выборки, а не по уже собранному результату. Это заметно ускоряет отчёты по большим регистрам.

Правку макета типового отчёта делайте в расширении конфигурации или в копии отчёта. Изменения в основной конфигурации на поддержке потеряются или помешают обновлению.

Параметры или отбор: что выбрать и как связать

Пользователю всё равно, параметр перед ним или отбор: в шапке отчёта оба выглядят как поле со значением. Для разработчика разница существенная.

ЧтоГде работаетКогда выбирать
Параметр (&Склад)Подставляется в текст запросаЗначение нужно в условии виртуальной таблицы, в расчётах, в соединениях
ОтборНакладывается на поле набора данныхНужны виды сравнения: «в списке», «не равно», «в группе», «заполнено»

Параметры выводятся в пользовательские настройки так же, как отборы: закладка Настройки → Параметры, строка параметра → Свойства элемента пользовательских настроек.

Свойства параметра на закладке «Параметры» схемы

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

  • 🔹 Тип — без типа поле в форме будет «пустым», без выбора значения;
  • 🔹 Доступен список значений — пользователь сможет выбрать сразу несколько складов;
  • 🔹 Ограничение доступности — если флаг стоит, параметр скрыт от пользователя целиком. Его заполняют только в коде;
  • 🔹 Доступные значения — фиксированный список, из которого разрешено выбирать.

Параметры периода (НачалоПериода, КонецПериода) удобнее выводить через один параметр типа СтандартныйПериод. Пользователь видит привычный выбор «этот месяц», «квартал», произвольные даты.

Связь значений: договор только этого контрагента

Классическая задача: в отчёте два отбора, «Контрагент» и «Договор», и в списке договоров нужно видеть только договоры выбранного контрагента.

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

Пошагово: выводим отбор в пользовательские настройки

Рассмотрим на примере отчёта по остаткам, где пользователю нужен отбор по складу.

Шаг 1. Создайте элемент отбора в варианте

  1. Откройте отчёт в Конфигураторе, двойным щелчком откройте макет ОсновнаяСхемаКомпоновкиДанных.
  2. Перейдите на закладку Настройки. Слева — структура отчёта, внизу — закладки Выбранные поля, Отбор, Порядок и другие.
  3. Выделите корень структуры Отчет, на закладке Отбор перетащите поле Склад из левой части в правую.
  4. Вид сравнения оставьте Равно или выберите В списке, если складов может быть несколько.
  5. Значение не заполняйте, флаг использования снимите. Иначе отчёт по умолчанию отфильтруется по пустому складу и выдаст пустой результат.

Шаг 2. Включите элемент в пользовательские настройки

  1. Выделите строку Склад в отборе.
  2. Правая кнопка мыши → Свойства элемента пользовательских настроек. Эта же команда есть на панели над таблицей отбора.
  3. Поставьте флаг Включать в пользовательские настройки.
  4. В поле Представление напишите подпись, которую увидит пользователь, например «Склад хранения». Пусто — подпись возьмётся из заголовка поля.
  5. Выберите режим редактирования и нажмите ОК.

После этого рядом со строкой отбора появится отметка, что элемент входит в пользовательские настройки.

Шаг 3. Проверьте в режиме предприятия

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

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

Весь отбор целиком в настройках

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

Режимы показа и группировки: где пользователь увидит отбор

Режим редактирования в свойствах элемента определяет, где отбор появится.

РежимГде виденДля чего
Быстрый доступПрямо в форме отчёта, над результатом2–5 главных отборов: период, организация, склад
ОбычныйТолько в окне настроек отчётаРедкие отборы, чтобы не загромождать шапку
НедоступныйПользователю не показываетсяЭлемент нужен в пользовательских настройках, но менять его в форме нельзя

Совет из практики: в быстрый доступ выносите не больше пяти полей. Дальше шапка отчёта съедает экран, а пользователи перестают замечать, что какой-то флаг остался включён.

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

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

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

Группа условий «ИЛИ»

Кнопка группы на закладке Отбор создаёт группу И, ИЛИ или НЕ. Например: «Склад = Основной ИЛИ Склад = Розница». Группу целиком можно вывести в пользовательские настройки — пользователь включает и выключает её одним флажком.

Сохранение настроек и вариантов отчёта

Здесь чаще всего путаются. В отчёте на СКД есть два уровня.

  • 📄 Вариант отчёта — полный набор настроек: структура, поля, отборы, оформление. Создаётся разработчиком в схеме (панель вариантов на закладке Настройки) или пользователем, у которого есть права на сохранение вариантов.
  • 👤 Пользовательские настройки — только значения тех элементов, что помечены флагом. Хранятся отдельно для каждого пользователя и каждого варианта.

Отметка в каждом варианте отдельно

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

Как пользователь сохраняет свой отбор

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

В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) форма отчёта своя. Там вариант сохраняют через Еще → Сохранить вариант отчета, а состав быстрых настроек можно поменять в окне Настройки → режим расширенной настройки. Выведенный разработчиком отбор в этих формах показывается так же.

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

Отбор из кода: когда схему не трогать

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

&НаСервере
Процедура ПриЗагрузкеВариантаНаСервере(Настройки)

	ИмяПоля = "Склад";
	Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);

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

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

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

Ключевая строка — ИдентификаторПользовательскойНастройки. Именно заполненный идентификатор делает элемент пользовательской настройкой. Флаг в Конфигураторе делает то же самое, только незаметно.

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

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

Ошибки при настройке отбора и как их найти

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

Диагностика: выберите симптом

Сброс сохранённых настроек у пользователя

Если правка схемы «не доехала» до пользователя, дело почти всегда в сохранённых настройках. Варианты решения от мягкого к жёсткому:

  1. Пользователь в форме отчёта выбирает стандартные настройки в меню Еще. Сбрасываются только его настройки этого отчёта.
  2. В конфигурациях на БСП администратор очищает настройки пользователя через Администрирование → Настройки пользователей и прав → раздел настроек пользователей.
  3. Удаление файлов кэша и настроек на клиенте — крайняя мера. Пользователь потеряет все сохранённые настройки форм и отчётов, поэтому делайте это только с его согласия.

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

Можно ли сделать отбор обязательным для заполнения?
Средствами флажков схемы — нет. Обычно отбор переводят в параметр и проверяют заполнение в коде перед формированием отчёта, выдавая сообщение пользователю.
Можно ли вывести в быстрый доступ значение по умолчанию?
Да. Заполните значение в элементе отбора в варианте и включите использование. Пользователь увидит отбор уже отмеченным и сможет его поменять.
Чем быстрый доступ отличается от обычного режима в работе отчёта?
Ничем, кроме места показа. Условие отбора применяется одинаково, разница только в том, видит ли пользователь поле сразу в форме или в окне настроек.
Сколько отборов можно вывести в пользовательские настройки?
Жёсткого ограничения платформа не ставит. Практический предел задаёт удобство: в шапке формы больше пяти полей читаются плохо, остальное убирайте в обычный режим.
Работает ли это в расширении конфигурации?
Да. Заимствуйте отчёт и его форму в расширение и добавьте отбор программно, как в примере кода выше. Основная конфигурация при этом остаётся без изменений и обновляется штатно.