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

Программирование - Работа с интерфейсом

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

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

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

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

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

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

&НаКлиенте
Процедура КомандаНомерГруппировки(Команда)
	
	Попытка
		НомерГруппировки = Число(СтрЗаменить(Команда.Имя, "УровеньГруппировки_", "")) - 1;
		
		ОтчетТабличныйДокумент.ПоказатьУровеньГруппировокСтрок(НомерГруппировки);
	Исключение
	КонецПопытки;
	
КонецПроцедуры

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

См. также

В этой теме еще нет сообщений.
Оставьте свое сообщение