Как добавить компактное поле отбора на управляемую форму отчета СКД

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке отчетов на системе компоновки данных (СКД) часто возникает задача сделать интерфейс максимально удобным и компактным. Пользователи привыкли к тому, что в типовых конфигурациях 1С (таких как Управление торговлей 11 или Бухгалтерия предприятия 3.0) фильтры отображаются в верхней части формы одной строкой, например: Контрагент = ООО "Ромашка", Склад = Основной. В этой статье мы подробно разберем, как добиться такого эффекта, настроить группировку фильтров и программно управлять этими настройками.

Настройка пользовательских настроек в схеме СКД

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

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

Проанализируем доступные режимы редактирования в этом окне. Для достижения цели «как в типовых» нам необходимо выбрать правильный Режим редактирования:

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

Если мы просто добавим несколько полей в «Быстрый доступ», они могут занять слишком много места по вертикали. Чтобы объединить их в одну логическую строку, воспользуемся механизмом группировки. Рассмотрим, как это сделать:

  1. В списке отборов нажмем правую кнопку мыши и выберем пункт Сгруппировать элементы отбора.
  2. Тип группы выберем Группа И.
  3. Перетащим нужные поля внутрь этой группы.
  4. Теперь установим пользовательские настройки не для каждого поля по отдельности, а для всей группы целиком.

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

Особенности работы с формой отчета

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

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

  1. Создадим в дереве элементов формы новую группу (рекомендуется вид Группа - Состав пользовательских настроек).
  2. В качестве источника данных укажем Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.

Программное добавление отбора

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


// Получаем доступ к настройкам
Настройки = Отчет.КомпоновщикНастроек.Настройки;

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

// Важно: чтобы поле появилось на форме, нужно связать его с пользовательскими настройками
НовыйЭлемент.ИдентификаторПользовательскойНастройки = "УникальныйИдентификаторСклада";

// Если нужно сразу установить значение
НовыйЭлемент.ПравоеЗначение = Справочники.Склады.НайтиПоНаименованию("Основной склад");

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

Использование возможностей БСП

Если вы работаете в конфигурации на базе БСП (Библиотека стандартных подсистем), механизм отображения отборов часто переопределяется программно. В таких системах за вывод быстрых настроек отвечает подсистема Варианты отчетов. Рассмотрим основные рекомендации для таких случаев:

Таким образом, мы выяснили, что добавление поля «Отбор» в компактном виде — это комплексная задача, которая решается либо через свойства пользовательских настроек в СКД, либо через правильное конфигурирование элементов управляемой формы. Использование Режима быстрого доступа и Группировки позволяет создавать интерфейсы, которые соответствуют современным стандартам юзабилити платформы 1С.

← На главную