Система отчетов Ананас'а

Общий форум

Модератор: app

Система отчетов Ананас'а

Сообщение zcrendel » Пн май 25, 2009 4:42 pm

Приветствую разработчиков и пользователей Ананас'а!

По согласованию с 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) и доками.

docs.tar.bz2
(155.88 КБ) Скачиваний: 265
Вложения
reports_20060717_fixed.tar.bz2
(исправление компиляции программы, ранее не собиралась под suse 11.1)
(87.43 КБ) Скачиваний: 231
Последний раз редактировалось zcrendel Пт июл 17, 2009 3:20 pm, всего редактировалось 2 раз(а).
zcrendel
 
Сообщения: 10
Зарегистрирован: Пн май 25, 2009 2:35 pm

Re: Система отчетов Ананас'а

Сообщение radist » Пн июл 06, 2009 11:58 pm

Вот такая вот ошибочка:
g++ -c -pipe -g -I. -I.. -I../include -O2 -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -D_REENTRANT -Wall -W -DHAVE_LOCALE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtScript -I/usr/include -I../include -I.moc -I. -o .obj/cglobals.o cglobals.cpp
g++ -c -pipe -g -I. -I.. -I../include -O2 -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -D_REENTRANT -Wall -W -DHAVE_LOCALE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtScript -I/usr/include -I../include -I.moc -I. -o .obj/capplication.o capplication.cpp
capplication.cpp: In member function ‘void CApplication::initLocale()’:
capplication.cpp:72: error: ‘::nl_langinfo’ has not been declared
capplication.cpp:72: error: ‘CODESET’ was not declared in this scope
make[1]: *** [.obj/capplication.o] Ошибка 1
make[1]: Leaving directory `/usr/src/packages/BUILD/docs/reports/src'
make: *** [sub-src-make_default] Ошибка 2
radist
 
Сообщения: 97
Зарегистрирован: Ср фев 25, 2009 10:39 am

Re: Система отчетов Ананас'а

Сообщение zcrendel » Чт июл 16, 2009 12:55 am

Добавил ссылку на исправленную программу.
zcrendel
 
Сообщения: 10
Зарегистрирован: Пн май 25, 2009 2:35 pm

Re: Система отчетов Ананас'а

Сообщение radist » Чт июл 16, 2009 1:05 am

Сенкс потестим. Что на счет окончательного внедрения в ананас?
radist
 
Сообщения: 97
Зарегистрирован: Ср фев 25, 2009 10:39 am

Re: Система отчетов Ананас'а

Сообщение zcrendel » Чт июл 16, 2009 2:24 am

Думаю, это вопрос к app и другим разработчикам ананаса, поскольку тут требуется:

1. Обсуждение/Доработка/Утверждение концепции.
2. Обсуждение технических деталей: создание простейшего редактора отчетов? какие еще требуются плагины (doc, html?) для генерации отчетов? удобный доступ к реальным данным и т.п.

В этой ветке еще не было высказано ни одного мнения :) А нужна ли вообще ананасу система такого плана?
zcrendel
 
Сообщения: 10
Зарегистрирован: Пн май 25, 2009 2:35 pm

Re: Система отчетов Ананас'а

Сообщение app » Чт июл 16, 2009 8:01 am

Напомните вашу позицию по работе с метаданными, пожалуйста.
Ведь структура данных бизнес-схем меняется. Как предлагаемый вами код будет работать в таких условиях?
Андрей
Аватара пользователя
app
 
Сообщения: 332
Зарегистрирован: Вт фев 24, 2009 5:38 pm

Re: Система отчетов Ананас'а

Сообщение radist » Чт июл 16, 2009 8:20 am

tom@linux-kht1:/usr/src/packages/BUILD/reports/src> qmake
tom@linux-kht1:/usr/src/packages/BUILD/reports/src> make
g++ -c -pipe -g -I. -I.. -I../include -O2 -march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -D_REENTRANT -Wall -W -DHAVE_LOCALE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtScript -I/usr/include -I../include -I.moc -o .obj/cglobals.o cglobals.cpp
g++ -c -pipe -g -I. -I.. -I../include -O2 -march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -D_REENTRANT -Wall -W -DHAVE_LOCALE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtScript -I/usr/include -I../include -I.moc -o .obj/capplication.o capplication.cpp
capplication.cpp: In member function ‘void CApplication::initLocale()’:
capplication.cpp:74: error: ‘::nl_langinfo’ has not been declared
capplication.cpp:74: error: ‘CODESET’ was not declared in this scope
make: *** [.obj/capplication.o] Ошибка 1
tom@linux-kht1:/usr/src/packages/BUILD/reports/src>
radist
 
Сообщения: 97
Зарегистрирован: Ср фев 25, 2009 10:39 am

Re: Система отчетов Ананас'а

Сообщение radist » Чт июл 16, 2009 9:07 am

http://ananas.su/forum/viewtopic.php?p=457#p457

И вот тут один обиженый на нас еще делает отчетник http://www.1cpp.ru/forum/YaBB.pl?num=1218452481/0
radist
 
Сообщения: 97
Зарегистрирован: Ср фев 25, 2009 10:39 am

Re: Система отчетов Ананас'а

Сообщение zcrendel » Чт июл 16, 2009 10:21 am

radist писал(а):
tom@linux-kht1:/usr/src/packages/BUILD/reports/src> qmake
tom@linux-kht1:/usr/src/packages/BUILD/reports/src> make
g++ -c -pipe -g -I. -I.. -I../include -O2 -march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -D_REENTRANT -Wall -W -DHAVE_LOCALE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtScript -I/usr/include -I../include -I.moc -o .obj/cglobals.o cglobals.cpp
g++ -c -pipe -g -I. -I.. -I../include -O2 -march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -D_REENTRANT -Wall -W -DHAVE_LOCALE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtScript -I/usr/include -I../include -I.moc -o .obj/capplication.o capplication.cpp
capplication.cpp: In member function ‘void CApplication::initLocale()’:
capplication.cpp:74: error: ‘::nl_langinfo’ has not been declared
capplication.cpp:74: error: ‘CODESET’ was not declared in this scope
make: *** [.obj/capplication.o] Ошибка 1
tom@linux-kht1:/usr/src/packages/BUILD/reports/src>


Очень странно. А файл /usr/include/langinfo.h (который из glibc) у вас есть?
zcrendel
 
Сообщения: 10
Зарегистрирован: Пн май 25, 2009 2:35 pm

Re: Система отчетов Ананас'а

Сообщение zcrendel » Чт июл 16, 2009 11:00 am

app писал(а):Напомните вашу позицию по работе с метаданными, пожалуйста.
Ведь структура данных бизнес-схем меняется. Как предлагаемый вами код будет работать в таких условиях?


Использование существующих механизмов :-) или написание новых, например с такой схемой работы:

БД <=> классы/функции доступа к БД (встроенные + пользовательские) <=> генератор отчета (сценарий, формирование связей теги-значения) => готовый к печати отчет (MSO,OO,Html,...)

Классы доступа к БД можно оформить в виде модулей, работающих через встроенный класс ананаса - СRawData. Задача CRawData - осуществление запросов к БД, вида "SELECT".

to radist, на всякий случай - qmake && make делается от корня проекта (а не внутри 'src'), т.е. в вашем случае:
это
tom@linux-kht1:/usr/src/packages/BUILD/reports> qmake
tom@linux-kht1:/usr/src/packages/BUILD/reports> make

а не

tom@linux-kht1:/usr/src/packages/BUILD/reports/src> qmake
tom@linux-kht1:/usr/src/packages/BUILD/reports/src> make

тогда будут собраны все компоненты программы.

Это конечно не отменяет предыдущий вопрос: у вас файл /usr/include/langinfo.h в системе присутствует?
zcrendel
 
Сообщения: 10
Зарегистрирован: Пн май 25, 2009 2:35 pm

След.

Вернуться в Общий форум

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron