<< Click to Display Table of Contents >> Navigation: Проект > Документы объектов > Генератор отчетов > Примеры построения отчетов > Интерактивные отчеты > Детализация данных на отдельной странице |
Более продвинутым способом детализации данных является детализация на отдельной странице отчета. Суть данного метода, состоит в том, что в отчете создается еще одна дополнительная страница, в которой и размещаются детализированные данные. Если, после формирования отчета, оператору необходимо увидеть дополнительную информацию он щелкает по определенному компоненту (строка данных, ячейка, график), и происходит открытие дополнительной страницы.
В качестве примера сделаем детализацию в Master-Detail отчете, рассмотренном в главе 5 "Непрерывно-периодический отчет". Напомним, данный отчет отображает информацию о проведенном циклическом процессе (отжиг, закалка). Отчет содержит в себе общую информацию о процессе – время начала и конца цикла, уставка, максимальное и минимальное значение, а также график процесса.
Сделаем, чтобы при щелчке по графику процесса открывалась дополнительная страница отчета, содержащую процесс изменения температуры в табличном виде.
Сначала создадим новую страницу.
Вытащим на созданную страницу источник данных "Значения_температуры", разместим на странице три бэнда (Заголовок данных, Данные и Итог данных) и настроим внешний вид ячеек - сделаем границу и разместим текст по центру.
Вернемся на страницу Page1 и сделаем, чтобы щелчок по диаграмме на первой странице, приводил к открытию второй страницы. Для этого выделим диаграмму, и перейдем на панель свойств. В панели свойств, включим откроем окно настроек Взаимодействия и перейдем на вкладку Детализация:
Включим детализацию и укажем страницу детализации - Page2.
Запустим предварительный просмотр. Наведем мышь на сформированный график (курсор мыши изменит свою форму), и нажмем левую кнопку мыши.
Произошло открытие нашей второй страницы. При этом в верхней части окна просмотра появились вкладки– с их помощью можно осуществлять навигацию по открытым окнам (вернутся на исходную, или другую сформированную страницу).
Текущий отчет содержит информацию о трех циклах, поэтому и на странице детализации отображены данные по всем этим циклам. Нам же необходимо, чтобы страница содержала данные только по выбранному нами циклу.
Чтобы убрать лишние данные, их необходимо отфильтровать по времени начала и времени конца цикла. В настройках бэнда Данные есть вкладка Фильтры, где можно произвести данную операцию. Однако для того чтобы выполнить фильтрацию, необходимо передать на страницу детализации время начала и конца цикла. Для решения данной задачи, у компонента существуют параметры детализации.
Вернемся в режим разработки, и снова выберем диаграмму. Откроем окно настройки Взаимодействия и перейдем на вкладку Параметры:
Наименование параметра – это имя, по которому можно будет обратится на странице детализации для получения переданного значения. В поле Выражение задается функция которая присвоит параметру детализации нужное значение.
Нам необходимо передать на страницу детализации время начала (колонка источника данных "Параметры_цикла.Начало_цикла") и конца цикла (колонка "Параметры_цикла.Конец_цикла").
Добавим новый параметр детализации, дадим ему наименование – Start, а выражение –
Параметры_цикла.Начало_цикла
Второму параметру детализации зададим наименование – End, а выражение - Параметры_цикла.Конец_цикла.
Перейдем на страницу 2. Сначала проверим передачу параметров на страницу детализации – сделаем вывод значений параметров в заголовке отчета. Для этого добавим на страницу бэнд Заголовок отчета. Добавим на бэнд два текстовых поля с текстом "Время начала цикла" и "Время конца цикла".
Добавим напротив верхнего текстового поля еще одно поле. Пропишем в поле код:
{(DateTime) this["Start"]}
С помощью this["Start"] происходит обращение к переданному параметру детализации "Start". Функция (DateTime) выполняет преобразование полученного значения, к необходимому нам типу "Дата-Время".
Аналогично сделаем со вторым параметром детализации. Теперь код будет:
{(DateTime)this["End"]}
В итоге бэнд будет выглядеть следующим образом:
Запустим предварительный просмотр, и выберем одну из диаграмм. В ячейки будут прописаны время начала и конца выбранного цикла:
Теперь настроим фильтрацию.
Выделим бэнд Данные, откроем окно настроек данных и перейдем на вкладку Фильтры.
Введем выражение нашего фильтра:
Значения_температуры.Время>(DateTime)this["Start"] && Значения_температуры.Время<(DateTime)this["End"]
С помощью такой фильтрации мы оставим на странице данные только за нужный нам цикл.
Запустим предварительный просмотр, и выберем один из циклов.
Теперь на странице только нужные нам данные.
Аналогичным образом можно осуществлять фильтрацию по любому другому передаваемому параметру (например - по имени установки, по уставке значения, номеру счетчика и т.д.). Во всех случаях обращение к параметру на странице детализации будет осуществляться через this["Имя_Параметра"]. В зависимости от типа данных параметра, функции преобразования будет отличаться: для строк – (string), для целых чисел – (int), для вещественных - (double) и т.д. Узнать тип данных колонки, можно на закладке Свойства.
Примечание. Возможность детализации доступно только в окне просмотра отчетов.
Примечание. Готовый отчет можно посмотреть в проекте "Интерактивные отчеты" в объекте "Детализация данных".