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