Есть замечательная публикация по добавлению кнопок управления группировок отчета.
Для меня, минусом является то, что нужно править формирование отчетов (при компоновке результата).
В текущей публикации раскрывается другой способ (через подменю командной панели формы отчета).
Для меня, минусом является то, что нужно править формирование отчетов (при компоновке результата).
В текущей публикации раскрывается другой способ (через подменю командной панели формы отчета).
Ссылка на публикацию-основание.
Все изменения выполняются в общей форме «ФормаОтчета».
Изменения в элементах формы.
В командную панель добавил подменю «ПодменюГруппировка». Добавление/удаление команд и элементов формы выполняется программно в процедуре «ОбновитьПодменюГруппировка».
Изменения в модуле.
Изменения в типовой процедуре «ПослеФормированияНаКлиенте».
Добавил две новых процедуры.
&НаКлиенте
Процедура ПослеФормированияНаКлиенте()
// Типовой код
ОбновитьПодменюГруппировка();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПодменюГруппировка()
Родитель = Элементы.ПодменюГруппировка;
РодительПодчиненныеЭлементы = Родитель.ПодчиненныеЭлементы;
Пока РодительПодчиненныеЭлементы.Количество() Цикл
ПодчиненныйЭлемент = РодительПодчиненныеЭлементы.Получить(0);
Команды.Удалить(Команды.Найти(ПодчиненныйЭлемент.Имя));
Элементы.Удалить(ПодчиненныйЭлемент);
КонецЦикла;
ПрефиксКоманды = "УровеньГруппировки_";
ПрефиксКомандыЗаголовок = "Группировка ";
Для Инд = 1 По ОтчетТабличныйДокумент.КоличествоУровнейГруппировокСтрок() Цикл
ИмяКоманды = ПрефиксКоманды + Инд;
НоваяКоманда = Команды.Добавить(ИмяКоманды);
НоваяКоманда.Действие = "КомандаНомерГруппировки";
НоваяКоманда.Заголовок = ПрефиксКомандыЗаголовок + Инд;
НовыйЭлемент = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), Родитель);
НовыйЭлемент.ИмяКоманды = ИмяКоманды;
КонецЦикла;
КонецПроцедуры // ОбновитьПодменюГруппировка
&НаКлиенте
Процедура КомандаНомерГруппировки(Команда)
Попытка
НомерГруппировки = Число(СтрЗаменить(Команда.Имя, "УровеньГруппировки_", "")) - 1;
ОтчетТабличныйДокумент.ПоказатьУровеньГруппировокСтрок(НомерГруппировки);
Исключение
КонецПопытки;
КонецПроцедуры
Так как анализ группировок выполняется после формирования отчета, то можно создать заголовки команд согласно группировкам отчета (через анализ настроек отчета, через поиск по табличному документу или еще каким-то уникальным способом 😉 ).