helpf.pro
Регистрация
 +2 
Распечатать

1С 8.x : Кнопки управления уровнями группировки (генерировать программно)

Кнопочки для управления уровнями группировки генерируются программно.
Для этого в модуле формы, в самом конце процедуры формирования отчета, нужно вызвать процедуру СгенерироватьКнопкиУправленияГруппировкой().
В модуль формы нужно добавить две процедуры, где "ПолеТабДок" - это поле табличного документа, в которое выводится отчет:

Код 1C v 8.х
 Процедура СгенерироватьКнопкиУправленияГруппировкой()

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

ШагКнопок = 13;
ПрефиксИмениКн = "КнГр_";

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

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

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

// Вызывется при нажатии кнопочек "1", "2" и т.д. (для сворачивания группировок)
Процедура СвернутьДоУровня(Элемент)

Уровень = Число(Элемент.Заголовок); // здесь записан нужный уровень
ЭлементыФормы.ПолеТабДок.ПоказатьУровеньГруппировокСтрок(Уровень - 1);

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


Примечание:
Вышеприведенный код будет работать правильно, если ПолеТабличногоДокумента, на которое выводится Отчет, расположено на Форме. Если же ПолеТабличногоДокумента расположено на Панели, то строчку кода, в которой создается НоваяКнопка, необходимо чуть дополнить:
Код 1C v 8.х
 НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), ПрефиксИмениКн + Сч, Истина, ЭлементыФормы.Панель);    


Примечание 2:
Решение для генерации кнопок в отчетах, построенных на СКД.
Вешаешь на кнопку "Сформировать" следующую процедуру
Код 1C v 8.х
 Процедура кнСформировать_Нажатие(Кнопка)

ЭлементыФормы.Результат.Очистить();
ОтчетОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);

// Если необходимо указать Уровень, до которого необходимо раскрыть группировки строк,
// то можно добавить
ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(1);

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

КонецПроцедуры //кнСформировать_Нажатие()

// где ЭлементыФормы.Результат, это Поле табличного документа, в которое выводится отчет СКД.
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 22701
 +2 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За
ZIP-архив Чтение 1
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 11
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме
Посмотреть все результаты поиска похожих
Комментарии
bohdanmk
01.08.2016 15:38Комментарий: 1
bohdanmk

Прикрутил Кнопки управления уровнями группировки к Универсальному отчету (1с 8.3 УПП обычные формы) и заметил следующие особенности:

1. При отображении/скрытии Быстрые отборы ПолеТабличногоДокумента смещается соответственно вниз/вверх, а Кнопки управления уровнями группировки остаются на месте относительно формы. Легко исправляется добавлением после строки:

Код 1C v 8.3
 
НоваяКнопка.Ширина    = 11;

следующего кода:

Код 1C v 8.3
 
НоваяКнопка.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ЭлементыФормы.ПанельБыстрыеОтборы, ГраницаЭлементаУправления.Низ, , );
НоваяКнопка.УстановитьПривязку(ГраницаЭлементаУправления.Низ, НоваяКнопка, ГраницаЭлементаУправления.Верх, , );

2. Если формировать отчет через кнопки Настройка... -> Сформировать, то Кнопки управления уровнями группировки не создаются вообще. Пока не исправил.

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.