По согласованию с app выкладываю здесь свои наработки, связанные с построением отчетов,
использущих QScript, Qt4. Идеи генерации отчетов по шаблонам, думаю, всем кто пользуется ананасом, хорошо известны. Идея данной работы - формализация API генерации отчетов и использование таблиц предварительной обработки для хранения временных данных, которые используются как входные данные для генерации (и дальнейшего просмотра/печати) отчетов в произвольном формате. Более детально это описано в Reports.odt. Прежде чем читать далее, рекомендую ознакомится с данным документом.
Объекты классов CReport, CSection, CRow, CTag (см. Reports.odt в архиве docs.tar.bz2) могут быть использованы прямо или косвенно (через вызов функций), оба варианта показаны в примере (см. исходный код программы-примера reports.tar.bz2).
Считаю что класс, подобный CReport необходимо включить в основной код Ананаса, и таким образом получить общие принципы формирования отчета, вне зависимости от формата или вида отчета. А вот конкретный формат отчета будет определяться расширениями, оформленными в виде плагинов.
Как мне кажется, еще один плюс данного подхода - это доступ (чтение/запись) к значениям предобработанных для отчета данных. Эта возможность показана в примере.
Инструкция по сборке программы (пока работает только под linux):
- Код: Выделить всё
1. В корневом каталоге программы запустить qmake && make
2. Зайти в каталог ./bin и запустить start.sh
3. В меню "Выбрать шаблон", выбрать шаблон из каталога templates, после чего
выбрать "Создать отчет".
Тестировалось на версиях Qt 4.4.2 - 4.5.1 (скомпилированные с поддержкой sqlite), ОС gentoo, но должно работать на большинстве систем. Требуется наличие в системе OpenOffice и sqlite.
С удовольствием выслушаю ваши замечания и предложения.
Архив с программой (+ плагин для ODF) и доками.