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

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

При разработке отчетов на базе системы компоновки данных (СКД) в управляемом приложении разработчики часто сталкиваются с ситуацией, когда стандартная команда выбора варианта отчета оказывается скрыта в меню Еще > Прочее. При попытке вынести команду наружу через пользовательский механизм Изменить форму (установив признак Только в Еще = Нет) кнопка все равно остается сгруппированной внутри выпадающего подменю Прочее. Разберем причины такого поведения платформы и рассмотрим практические способы размещения кнопки отдельным элементом на командной панели.

Причины поведения командной панели управляемой формы

Проанализируем, почему команда не встает на основную панель через пользовательскую настройку. В автоматически формируемой платформой командной панели стандартные команды жестко привязаны к автогенерируемым группам (Прочее, Все действия). Пользовательская настройка интерфейса позволяет лишь регулировать видимость элементов внутри их родительской группы, но не дает возможности перенести системную команду из предопределенной группы верхнего уровня на корень панели.

Кроме того, в типовых конфигурациях (таких как 1С:Бухгалтерия предприятия, 1С:ERP, 1С:Управление торговлей) для отчетов без явной формы используется общая форма из Библиотеки стандартных подсистем (БСП) — ОбщиеФормы.ФормаОтчета. В ней логика работы с вариантами переопределена и завязана на справочник ВариантыОтчетов. Если требуется индивидуальное расположение элементов интерфейса, необходимо создать собственную основную форму отчета.

Способ 1. Явное добавление стандартной команды в форму в Конфигураторе

Рассмотрим основной способ размещения кнопки на панели отчета с собственной управляемой формой. Разберем последовательность действий по шагам:

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

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

Способ 2. Регистрация вариантов СКД в подсистеме БСП

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

  1. Все варианты, настроенные на вкладке Настройки в схеме СКД, при первом запуске или обновлении информационной базы автоматически регистрируются в справочнике ВариантыОтчетов.
  2. Для внешних отчетов корректная работа типового меню выбора вариантов обеспечивается при добавлении отчета через раздел Администрирование > Печатные формы, отчеты и обработки > Дополнительные отчеты и обработки.

После регистрации типовая форма БСП предоставляет доступ ко всем предопределенным схемам настроек через стандартное меню вариантов.

Способ 3. Программная реализация компактного переключателя вариантов

Если требуется реализовать быстрый выбор предопределенных вариантов из схемы компоновки данных в виде выпадающего списка или компактного меню без открытия дополнительного диалогового окна, применим программный способ. Рассмотрим пример реализации.

Добавим на форму отчета реквизит ВыбранныйВариант (тип Строка) и свяжем его с элементом формы Поле ввода (установив режим КнопкаСпискаВыбора = Истина).

Заполним список доступных вариантов схемы при инициализации формы:


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

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


&НаКлиенте
Процедура ВыбранныйВариантПриИзменении(Элемент)
    ПрименитьВариантНаСервере(ВыбранныйВариант);
КонецПроцедуры

&НаСервере
Процедура ПрименитьВариантНаСервере(ИмяВарианта)
    
    ВариантСКД = Отчет.СхемаКомпоновкиДанных.ВариантыНастроек.Найти(ИмяВарианта);
    Если ВариантСКД <> Неопределено Тогда
        Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ВариантСКД.Настройки);
    КонецЕсли;
    
КонецПроцедуры

Такой подход обеспечивает мгновенное переключение между вариантами схемы компоновки данных непосредственно из панели отчета в один клик.

← На главную