Отчеты XSL, как они работают¶
- Table of contents
- Отчеты XSL, как они работают
Введение¶
Система отчетов позволяет формировать отчеты по расписаниям и по логам воспроизведения. Объхекты, формирующему конечный отчет, не важно, откуда взяты исходные данные. Вызвать систему отчетов можно
- Окно расписания![…]-Расписания->Отчет по логам воспроизведения.
Нужны текстовые логи за некоторый период (Сервис/Настройки/Лог)- Нажать кнопку Report…
- Окно расписания![…]-Расписания->Отчет по расписаниям
Нужны расписания с выданными в эфир элементами (с галочками)
Файлы отчетов должны находиться в каталоге SYSTEM\REPORTS
Как это устроено¶
- Программа анализирует логи или расписания и формирует XML документ с исходными данными
- пример документа
- Программа считывает .xsl файл из каталога SYSTEM\REPORTS и читает ветку<!tractt:environment>*
- Ищет тег шаблона - !tractt:source-template Например: !tractt:source-template src="RAO_hdr.xml" name="ehead" />
Если такой тег есть, то программа считывает указанный файл шаблона как XML документ - Считываются параметры отчета - теги, внутри <!tractt:fields>
- Ищет тег шаблона - !tractt:source-template Например: !tractt:source-template src="RAO_hdr.xml" name="ehead" />
- Программа отображает пользователю диалог отчета, на котором вводятся параметры отчета
- Формируется окончательный преобразуемый XML документ, состоящий из
- Исходных данных
- Шаблона
- Параметров отчета, введенных пользователем
- Этот документ преобразуется XSL и сохраняется в файл
Исходные файлы¶
* BASIC
* XML_LIB.cpp
* XML_DOC::!TransformTo - вызов собственно XSL преобразования.
Тут можно перехватить исходный XML и сохранить его в файл, если очень надо.
* OBJS
* XSL_REPORT_PROCESSOR.cpp
* класс, читающий шаблон и выполняющий преобразование
Именно он сливает все исходные данные в составной исходный документ
* DLG_EDIT_VALUES.cpp
* Окно с параметрами отчета. Тут пользователь вводит параметры
* OBJ_MAP.cpp
* Метод отчета по расписаниям OBJ_MAP::!ReportBySchedule()
* PLAY_INFO_DLG.cpp
* Диалог Отчета по логам
* метод вызова отчета void PLAY_INFO_DLG::!OnObjsBtnReport()