Кнопки управления группировками

1 Добавил: acsent

Кнопки управления группировками, отчет

Процедура СгенерироватьКнопкиУправленияГруппировкой(ЭлементТабПоле, Панель)

//	ЭлементТабПоле = ЭлементыФормы.ТабДопИнформация;
	
    НачалоВерх = ЭлементТабПоле.Верх + 3; // Привязка к верхнему левому углу ПоляТабличногоДокумента
    НачалоЛево = ЭлементТабПоле.Лево + 3; // Привязка к верхнему левому углу ПоляТабличногоДокумента

	Имя = ЭлементТабПоле.Имя;
	
    ШагКнопок      		= 13;
    ПрефиксИмениКн 		= "КнГрГор_" + Имя + "_";
	ПрефиксИмениКнВерт 	= "КнГрВерт_" + Имя + "_";

    // Удалить старые кнопки
    Сч = 0;
    Пока Сч < ЭлементыФормы.Количество() Цикл
        ТекЭлемент = ЭлементыФормы.Получить(Сч);
		Если (Найти(ТекЭлемент.Имя, ПрефиксИмениКн) > 0) ИЛИ
			 (Найти(ТекЭлемент.Имя, ПрефиксИмениКнВерт) > 0) Тогда
            ЭлементыФормы.Удалить(ТекЭлемент);
        Иначе
            Сч = Сч + 1;
        КонецЕсли;
    КонецЦикла;

    // Добавть новые кнопки по количеству группировок
    КоличествоГруппировок = ЭлементТабПоле.КоличествоУровнейГруппировокСтрок();
    Для Сч = 1 По КоличествоГруппировок Цикл
        НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), ПрефиксИмениКн + Сч, , Панель);
        НоваяКнопка.Верх      = НачалоВерх;
        НоваяКнопка.Лево      = НачалоЛево + (ШагКнопок * (Сч - 1));
        НоваяКнопка.Высота    = 11;
        НоваяКнопка.Ширина    = 11;
        НоваяКнопка.Шрифт     = Новый Шрифт("Шрифт диалогов и меню", 6);
        НоваяКнопка.Заголовок = "" + Сч;
        НоваяКнопка.УстановитьДействие("Нажатие", Новый Действие("СвернутьДоУровня"));
	КонецЦикла;
	
	НачалоЛево = НачалоЛево + Сч * ШагКнопок + 3;
	// Добавть новые кнопки по количеству группировок
    КоличествоГруппировок = ЭлементТабПоле.КоличествоУровнейГруппировокКолонок();
    Для Сч = 1 По КоличествоГруппировок Цикл
        НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), ПрефиксИмениКнВерт + Сч, , Панель);
        НоваяКнопка.Верх      = НачалоВерх + (ШагКнопок * (Сч - 1));
        НоваяКнопка.Лево      = НачалоЛево;
        НоваяКнопка.Высота    = 11;
        НоваяКнопка.Ширина    = 11;
        НоваяКнопка.Шрифт     = Новый Шрифт("Шрифт диалогов и меню", 6);
        НоваяКнопка.Заголовок = "" + Сч;
        НоваяКнопка.УстановитьДействие("Нажатие", Новый Действие("СвернутьДоУровняКолонки"));
    КонецЦикла;

КонецПроцедуры //СгенерироватьКнопкиУправленияГруппировкой()

Процедура СвернутьДоУровня(Элемент)

    Уровень = Число(Элемент.Заголовок); // здесь записан нужный уровень
	
	Имя = СтрЗаменить(Элемент.Имя, "_", Символы.ПС);
	Имя = СтрПолучитьСтроку(Имя, 2);
	
    ЭлементыФормы[Имя].ПоказатьУровеньГруппировокСтрок(Уровень - 1);

КонецПроцедуры //СвернутьДоУровня()

Процедура СвернутьДоУровняКолонки(Элемент)

    Уровень = Число(Элемент.Заголовок); // здесь записан нужный уровень
	
	Имя = СтрЗаменить(Элемент.Имя, "_", Символы.ПС);
	Имя = СтрПолучитьСтроку(Имя, 2);
	
    ЭлементыФормы[Имя].ПоказатьУровеньГруппировокКолонок(Уровень - 1);

КонецПроцедуры //СвернутьДоУровня()
Назад к списку

Комментарии

FastCode - сервис поиска кода 1С

Уже более 1000 разработчиков используют FastCode в работе!