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