Кнопки управления группировками табличного документа для управляемых форм (через подменю командной панели)

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

Ссылка на публикацию-основание.

Все изменения выполняются в общей форме «ФормаОтчета».

Изменения в элементах формы.

В командную панель добавил подменю «ПодменюГруппировка». Добавление/удаление команд и элементов формы выполняется программно в процедуре «ОбновитьПодменюГруппировка».
Изменения в модуле.
Изменения в типовой процедуре «ПослеФормированияНаКлиенте».
Добавил две новых процедуры.
&НаКлиенте
Процедура ПослеФормированияНаКлиенте()

// Типовой код

ОбновитьПодменюГруппировка();

КонецПроцедуры

&НаСервере
Процедура ОбновитьПодменюГруппировка()

Родитель     = Элементы.ПодменюГруппировка;
РодительПодчиненныеЭлементы = Родитель.ПодчиненныеЭлементы;
Пока РодительПодчиненныеЭлементы.Количество() Цикл

ПодчиненныйЭлемент = РодительПодчиненныеЭлементы.Получить(0);
Команды.Удалить(Команды.Найти(ПодчиненныйЭлемент.Имя));
Элементы.Удалить(ПодчиненныйЭлемент);

КонецЦикла;

ПрефиксКоманды   = "УровеньГруппировки_";
ПрефиксКомандыЗаголовок = "Группировка ";
Для Инд = 1 По ОтчетТабличныйДокумент.КоличествоУровнейГруппировокСтрок() Цикл

ИмяКоманды = ПрефиксКоманды + Инд;

НоваяКоманда = Команды.Добавить(ИмяКоманды);
НоваяКоманда.Действие = "КомандаНомерГруппировки";
НоваяКоманда.Заголовок = ПрефиксКомандыЗаголовок + Инд;

НовыйЭлемент = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), Родитель);
НовыйЭлемент.ИмяКоманды = ИмяКоманды;

КонецЦикла;

КонецПроцедуры // ОбновитьПодменюГруппировка

&НаКлиенте
Процедура КомандаНомерГруппировки(Команда)

Попытка
НомерГруппировки = Число(СтрЗаменить(Команда.Имя, "УровеньГруппировки_", "")) - 1;

ОтчетТабличныйДокумент.ПоказатьУровеньГруппировокСтрок(НомерГруппировки);
Исключение
КонецПопытки;

КонецПроцедуры

Так как анализ группировок выполняется после формирования отчета, то можно создать заголовки команд согласно группировкам отчета (через анализ настроек отчета, через поиск по табличному документу или еще каким-то уникальным способом 😉 ).

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *