Russian Qt Forum

Qt => Печать => Тема начата: AlFoX от Май 26, 2014, 03:09



Название: Генератор отчетов CuteReport 1.3.1 (обновляется)
Отправлено: AlFoX от Май 26, 2014, 03:09
Вышел релиз 1.2 Qt генератора отчетов:


документация:
[url=https://cute-report.com/en/download/82 (https://cute-report.com/ru/download[/url)

Все желающие приглашаются к тестированию. Пожелания и багрепорты сюда, пожалуйста:
https://sourceforge.net/p/qreport/tickets/?source=navbar (https://sourceforge.net/p/qreport/tickets/?source=navbar)

Основной веб-сайт:
http://cute-report.com (http://cute-report.com)


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: mitrich от Июль 16, 2014, 18:13
Не собирается (Win32 - Qt 5.3.1/MinGW 4.8, также Qt 4.8.0/MinGW 4.4)
Код:
Creating library file: ..\..\..\build\\libCuteDesigner1.a
./mainwindow.o:E:\Lib\Qt\CuteReport\CuteReport\src\apps\designerCore/mainwindow.cpp:92: undefined reference to `_imp___ZN10CuteReport24widgetGeometryFromStringEP7QWidgetRK7QString'
./mainwindow.o:E:\Lib\Qt\CuteReport\CuteReport\src\apps\designerCore/mainwindow.cpp:101: undefined reference to `_imp___ZN10CuteReport22widgetGeometryToStringEP7QWidget'
Возможно, дело в дефайне CUTEREPORT_EXPORTS, с которым объявлены widgetGeometryToString и widgetGeometryFromString - то ли он где-то значение своё меняет, то-ли ещё что-то.


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Июль 16, 2014, 19:59
Да, так и есть. Вроде как этот баг уже исправлен в ГИТе.
Я могу предоставить вам срез ГИТа для тестирования или дождитесь официального релиза, предплоожительно к концу недели.


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Июль 16, 2014, 22:17
А чего не github? Я, может быть, помог с допиливанием.. Мне скоро предстоит делать отчеты в моей проге, а тут такая новость )

ЗЫЖ В видео у тебя Music Cathalog


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Июль 16, 2014, 22:21
На github'e пока только документация в процессе написания. По поводу помощи проекту напишите мне на foxysoft d o g gmail точка ком
Видео, да. лажанулся. В других видео уже было исправлено, а это трогать не стал :)


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Август 18, 2014, 11:56
А можно в нем соорудить двухколоночный отчет?

Слева, к примеру, статическая колонка с разной информацией, справа таблица.

Или заложена ли в архитектуре возможность это допилить?


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Август 18, 2014, 12:07
Да. таблицу размести на Detail банде c Memo объектами справа, а статический Memo привяжи к DetailHeader как родителю и смести вниз чтобы он был на уровне Detail банда слева


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Август 18, 2014, 12:34
На github так и не выкладывал?

Я сейчас буду пытаться приладить твой генератор к проге на Qt5/Quick2.0 %) предвижу много интересного. Функционала для моего отчета вроде бы хватает.

А из скрипта можно рулить координатой Y или видимостью блока?

Не нашел у тебя доки по скриптованию отчетов  :(


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Август 18, 2014, 12:46
Пока что планов переместить реп на гитхаб нет.
Документация пишется вот тут: github.com/AlFoX/CuteReport-Docs/


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Август 18, 2014, 13:07
А в чем проблема, оно ведь у тебя и так под гитом? Дока на гитхабе..

Я вот уже нашел мелкую багу судя по всему, так бы мог сразу править и тебе слать исправления. Сейчас даже и не знаю как поступить, делать свой форк на гитхабе и туда коммитить?

Бага: у DetailHeader не работает свойство reprintOnNewPage, не дублируется на последующих страницах.


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Август 18, 2014, 20:53
Проблема в том что проект распростаняется с двойным лицензированием: GPL и коммерческая лицензия.
Поэтому просто так принять патчи невозможно. Коммитер должен явно указать что он не против включения патчей в коммерческую версию. Поэтому для тебя проще сделать патч и выслать мылом с явным указанием передачи прав. Для постоянных участников проекта есть соответсвующий договор.
Если нет желания быть постоянным участником или передавать свои права, то просто можно отслылать баги на багтрекер на соурсфорже.
Баги фиксятся довольно быстро если оформлены правильно и с достаточной информацией.

По поводу скрипта. Да можно рулить всеми свойствами объекта из скрипта.

По документации. Написание ее длительный процесс. Повысить приоритет какой-либо части можно тоже в фичреквесте на соурсфорже.

PS. в текущем срезе reprintOnNewPage работает, но чтобы не захламлять тему, пишите в багтрекер, там и разберемся.


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Октябрь 06, 2014, 15:59
А лицензии помягче чем LGPL не планируются? Хочется линкануться статически )


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Октябрь 06, 2014, 20:15
Вам бы мед да еще и ложку  ;)
Мне кажется лицензирование и так достаточно гибкое. К тому же полностью статически не получится слинковаться в любом случае  - там используются или будут использованы другие LGPL билиотеки, как PropertyEditor, QuaZip


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: Figaro от Октябрь 07, 2014, 00:16
На сайте так ничего о лицензии не нашел... Понимаю, что есть comercial, но далее GPL или LGPL? Все-таки две большие разницы...


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Октябрь 07, 2014, 00:17
Дизайнер под GPL, библиотека под LGPL


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Октябрь 07, 2014, 18:43
Сегодня наскреб проблем по отчетам. Тяжко в тикеты на аглицком всё это писать, потом то, что действительно надо, перенесу.

https://docs.google.com/document/d/1_HW5xEVysN6veJv8Gwjd6ivmLaQvVOzCpkpCzihFifY/pub

Для RC - многовато  ;)


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Октябрь 07, 2014, 21:25
Ну без англицского в наше время никуда ;)

отвечу по порядку так как там без нумерации:
1)привязка с сетке есть в свойствах страницы (useGrid)
2)множественное присвоение свойств - ведется работа. Так как это не будет затрагивать архитектуру, может быть сделано уже после релиза
3)ведется работа. будет в релизе
4)это фича. Корневой каталог из которого выйти нельзя указан в свойствах сторажда. для фаловой системы это "Filesystem"
5)уже реализовано - будет в релизе
6)Undo/Redo есть пока только в коммерческой версии.
7)должно работать - надо оформить тикет и разбираться
8 )не совсем понятно - надо фичреквест с примером.
9) почему MitterJoin надо по дефолту? Хотелось бы обоснования.
10) Падение дизайнера - надо более подробно как повторить. и тикет в багтрекер
11) это регрессия - уже исправлена в гите.

Проблемы при генерации отчета:
1) вероятно баг - нужен тикет
2) рамка и должна расти внутрь, так как размер объекта это его внешняя сторона. все оформление растет внутрь как сделано в FastReport и как делается в обычных QWidget. Стыковка объектов происходит по этой границе.

>>Для RC - многовато  ;)
Учитывая что багрепортов не так много, пути, кроме как выпустить релиз и форсировать тестирование, нету :)


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Октябрь 08, 2014, 09:01
9) почему MitterJoin надо по дефолту? Хотелось бы обоснования.
Как правило везде углы острые (word, и т.д.), без скосов. MitterJoin - это как раз оно. А у вас BevelJoin по дефолту и у всех рамок с шириной больше нуля углы срезанные.

2) рамка и должна расти внутрь, так как размер объекта это его внешняя сторона. все оформление растет внутрь как сделано в FastReport и как делается в обычных QWidget. Стыковка объектов происходит по этой границе.

С этим не согласен, не знаю как там в fastreport, но если мы посмотрим в word, openoffice, в любой векторный редактор, то там рамка растет равномерно в обе стороны. И это удобно, так как при совмещении границы рядом стоящих блоков их рамка тоже совмещается, а не удваиваится.

То что хорошо для QWidget, не годится для печати. Поэтому, для того, чтобы не ломать совместимость у вас с существующими отчетами, предлагаю ввести свойство у блока, регулирующее поведение рамки, по умолчанию пусть будет как сейчас - внутрь.

В аттаче я привел пример двух способов.

>>Для RC - многовато  ;)
Учитывая что багрепортов не так много, пути, кроме как выпустить релиз и форсировать тестирование, нету :)

Видать только одному мне нужны отчеты ( Я еще видел Exaro, но они были совсем сырые.

Попутно хотел задать вопрос, если я хочу грузить отчёт из ресурса какого вида URL должен быть? У меня ":/reports/myreport.rpt" не прокатывает, при этом через QFile он открывается.

Уже разобрался, надо так: "file::/reports/myreport.rpt"


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Октябрь 08, 2014, 09:24
C доводами по 9 и 2 пункту согласен, надо будет подкорректировать. Рамки оно, впринципe, так и рисует по умолчании в QGraphicsFramework, но надо будет подумать как это сделать правильно чтобы, объекты правильно перекрывались.

Пока что нету метода для чтения из ресурса приложения. Не думаю что это хорошая идея, так как, насколько я помню, память под ресурсы ограничена, а файл отчета может быть большим. Но если очень надо то можно добавить.


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Октябрь 08, 2014, 17:13
Пока что нету метода для чтения из ресурса приложения. Не думаю что это хорошая идея, так как, насколько я помню, память под ресурсы ограничена, а файл отчета может быть большим. Но если очень надо то можно добавить.

Память под ресурсы ограничена только свободным местом на диске и количество оперативной памяти. Более того RCC по умолчанию ресурсы пакует с помощью zlib и ваш XML должен очень хорошо пожаться.

Ну, собственно, через "file::" оно работает, больше ничего не надо. Разве, что в доке этот факт отразить, чтобы другие не гадали.

PS. Можете в шапке добавить ссылку на доку на гитхабе, чтобы не разыскивать её по теме?
Я, кстати, тестил RC1, только сейчас заметил, что уже RC3 есть, сейчас буду новый отчет катать ;D

Вижу уже есть хранилище Standard::Resource, видимо тогда все эти "file::" уже не нужны...


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: navrocky от Октябрь 08, 2014, 18:28
1) Сделал свою модель наследником от QStandardItemModel,
2) Засунул её в reportObject с помощью метода reportObject->setVariableValue("root",qlonglong(myModel)); как расписано в этом примере: https://github.com/AlFoX/CuteReport-Docs/blob/master/en/datasets/model_dataset.md
3) Вставил в memo в отчете вызов значения [root."myField"]
4) При исполнении в логах отчет говорит, что не видит переменной root

Что я делаю не так?

В сорцах вижу, что появилась DatasetModel, но как её использовать на первый взгляд для меня не ясно. И главное, надо ли это в моем случае?


Название: Re: Генератор отчетов CuteReport v1.0rc1
Отправлено: AlFoX от Октябрь 08, 2014, 18:59
Цитировать
Вижу уже есть хранилище Standard::Resource, видимо тогда все эти "file::" уже не нужны...
На вский случай чтобы не путать. этот сторажд для интегрирования объектов таких как картинки или данные прямо в файл отчета. Это не тот QRC файл, который делает Qt. Т.е с ресурсов приложения он не читает.

Насчет сжатия XML да, но в случае интегрирования в него данных и бинарных объектов, файлов локализации и пр. он может быть довольно большим.

Цитировать
Что я делаю не так?
CuteReport не работает ни с какими данными напрямую, только через датасеты. поэтому передать ссылку на модель не достаточно. Нужно добавить в отчет нужный датасет, в вашем случае ModelDataset. И вот он уже правильно разберет вашу модель и представит стандарный интерфейс к ней в ядро CuteReport. Важно чтобы имя датасета совпадало с именем переменной, которую вы передаете в отчет. в данном случае датасет должен быть назван "root"


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Октябрь 09, 2014, 10:21
Что-то пока не взлетает у меня.

1) Добавил в отчет dataset Standard::Model, назвал его root, указал sourceModelName: root.
2) Добавил колонки по количеству колонок в моей модели, при этом я не понял как их переименовать, чтобы не было 1,2,3
3) Band'у назначил dataset "root"
3) Добавил мою модель с одной строкой данных в коде как в предыдущем посте.
4) Cделал два пробных поля: [root."1"] и [root."report_date"]

В итоге, вместо значений - undefined

Как-то всё это не интуитивно. Логично было бы просто добавить dataset с моделью из кода, или из кода найти dataset по имени и назначить ему модель. И колонки в dataset по идее надо уметь именовать.

Ну и нужен работоспособный пример в документации, так как это один из ключевых моментов.

Выхлоп в логе:
Код:
======= Log general settings =========
level 'debug'(1)
level 'info'(2)
level 'error'(3)
level 'warning'(4)
level 'critical'(5)
level 'metric'(6)
Log level 'debug'(1):  Destinations: console:1 file:0
Log level 'info'(2):  Destinations: console:1 file:0
Log level 'error'(3):  Destinations: console:1 file:0
Log level 'warning'(4):  Destinations: console:1 file:0
Log level 'critical'(5):  Destinations: console:1 file:0
Log level 'metric'(6):  Destinations: console:1 file:0
Log is synchronous
11:16:27  ReportCore               Version ^ CuteReport version: 1.0
11:16:27  ReportCore               Plugin dir: /home/vlad/prog/Player/debug/bin/cutereport/plugins
11:16:27  ReportCore               Loading plugin: libArc
11:16:27  ReportCore               Loading plugin: libBarcode
11:16:27  ReportCore               Loading plugin: libChart
11:16:27  ReportCore               Loading plugin: libChord
11:16:27  ReportCore               Loading plugin: libDatasetCSV
11:16:27  ReportCore               Loading plugin: libDatasetFileSystem
11:16:27  ReportCore               Loading plugin: libDatasetModel
11:16:27  ReportCore               Loading plugin: libDatasetSQL
11:16:27  ReportCore               Loading plugin: libDetail
11:16:27  ReportCore               Loading plugin: libDetailFooter
11:16:27  ReportCore               Loading plugin: libDetailHeader
11:16:27  ReportCore               Loading plugin: libEllipse
11:16:27  ReportCore               Loading plugin: libExportPDF
11:16:27  ReportCore               Loading plugin: libForm
11:16:27  ReportCore               Loading plugin: libImage
11:16:27  ReportCore               Loading plugin: libLine
11:16:27  ReportCore               Loading plugin: libMemo
11:16:27  ReportCore               Loading plugin: libOverlay
11:16:27  ReportCore               Loading plugin: libPage
11:16:27  ReportCore               Loading plugin: libPageFooter
11:16:27  ReportCore               Loading plugin: libPageHeader
11:16:27  ReportCore               Loading plugin: libPie
11:16:27  ReportCore               Loading plugin: libPrinter
11:16:27  ReportCore               Loading plugin: libRectangle
11:16:27  ReportCore               Loading plugin: libRenderer
11:16:27  ReportCore               Loading plugin: libScript
11:16:27  ReportCore               Loading plugin: libSerializerXML
11:16:27  ReportCore               Loading plugin: libStorageFileSystem
11:16:27  ReportCore               Loading plugin: libStorageGIT
11:16:27  ReportCore               Loading plugin: libStorageResource
11:16:27  ReportCore               Loading plugin: libStorageSQL
11:16:27  ReportCore               Loading plugin: libSummary
11:16:27  ReportCore               Loading plugin: libTitle
11:16:27  Page                     38 format(s) are recognized
11:16:27  ReportCore               Import plugins not found!
2014-Oct-09 11:16:27.057879 D:  2105908 TH:0 (verb)0 HttpClient: <affb868d> #9 GET url: http://127.0.0.1:8080/v1/viewreports/2, data: ""
2014-Oct-09 11:16:27.937554 D:   879675 TH:0 (verb)0 HttpClient: <0463a785> #9 Reply: 1899 bytes
2014-Oct-09 11:16:27.943728 D:     6174 TH:0 (dbg )1 Tools: !!! "Standard::Page"
2014-Oct-09 11:16:27.943943 D:      215 TH:0 (dbg )1 Tools: !!! CuteReport::ReportInterface(0x17dec80, name = "report")
2014-Oct-09 11:16:27.944083 D:      140 TH:0 (dbg )1 Tools: !!! Page(0x2178f00, name = "page")
2014-Oct-09 11:16:27.944204 D:      121 TH:0 (dbg )1 Tools: !!! Page(0x2178f00, name = "page")
2014-Oct-09 11:16:27.953111 D:     8907 TH:0 (dbg )1 Tools: !!! 33
11:16:27  ReportPreview            run
11:16:27  ReportCore               render '25029760'
11:16:27  ReportCore               _render
11:16:27  Renderer                 started
11:16:27  ReportCore               serializer :Standard::XML
2014-Oct-09 11:16:27.986748 D:    33637 TH:0 (dbg )1 Tools: !!! "Standard::Page"
2014-Oct-09 11:16:27.986935 D:      187 TH:0 (dbg )1 Tools: !!! CuteReport::ReportInterface(0x21f78a0, name = "report_1")
2014-Oct-09 11:16:27.987037 D:      102 TH:0 (dbg )1 Tools: !!! Page(0x2194950, name = "page")
2014-Oct-09 11:16:27.987128 D:       91 TH:0 (dbg )1 Tools: !!! Page(0x2194950, name = "page")
2014-Oct-09 11:16:27.992533 D:     5405 TH:0 (dbg )1 Tools: !!! 33
2014-Oct-09 11:16:27.994788 D:     2255 TH:0 (dbg )1 Tools: !!! 33
11:16:27  Renderer::Processor      start thread id: 23462272  processor thread id: 36531984
11:16:28  Renderer::Processor      Preparing dataset 'root'
11:16:28  ReportCore               Renderer started for report: report
11:16:28  Renderer::Processor      started
11:16:28  Renderer::Processor      run thread id 36531984
11:16:28  Renderer::Processor      rendering page: page
11:16:28  Renderer::Processor      renderReportPage: page
11:16:28  ReportCore               Rendering report 'report': page 1 of 0
11:16:28  Renderer::Processor      process band: page header
11:16:28  Renderer::Processor      processing item: memo
11:16:28  Renderer::Processor      processing item: memo_1
11:16:28  Renderer::Processor      processing item: memo_3
11:16:28  Renderer::Processor      processing item: memo_4
11:16:28  Renderer::Processor      deploy item: memo
11:16:28  Renderer::Processor      deploy item: memo_1
11:16:28  Renderer::Processor      deploy item: memo_3
11:16:28  Renderer::Processor      deploy item: memo_4
11:16:28  Renderer::Processor      renderingEndItem item: memo
11:16:28  Renderer::Processor      renderingEndItem item: memo_1
11:16:28  Renderer::Processor      renderingEndItem item: memo_3
11:16:28  Renderer::Processor      renderingEndItem item: memo_4
11:16:28  Renderer::Processor      process band: page footer
11:16:28  Renderer::Processor      processing item: memo_18
11:16:28  Renderer::Processor      processing item: memo_19
11:16:28  Renderer::Processor      deploy item: memo_18
11:16:28  Renderer::Processor      deploy item: memo_19
11:16:28  Renderer::Processor      renderingEndItem item: memo_18
11:16:28  Renderer::Processor      renderingEndItem item: memo_19
11:16:28  Renderer::Processor      checking band: page header
11:16:28  Renderer::Processor      checking band: detail_1
11:16:28  Renderer::Processor      rendering dataset: root
11:16:28  Renderer::Processor      process band: detail_1
11:16:28  Renderer::Processor      processing item: memo_7
11:16:28  Renderer::Processor      processing item: rectangle
11:16:28  Renderer::Processor      processing item: memo_8
11:16:28  Renderer::Processor      processing item: memo_5
11:16:28  Renderer::Processor      processing item: memo_6
11:16:28  Renderer::Processor      deploy item: memo_7
11:16:28  Renderer::Processor      deploy item: rectangle
11:16:28  Renderer::Processor      deploy item: memo_8
11:16:28  Renderer::Processor      deploy item: memo_5
2014-Oct-09 11:16:28.061941 D:       36 TH:1 (dbg )1 syslog: Thread #1 with id=7fc43bfff700
2014-Oct-09 11:16:28.061941 D:       36 TH:1 (dbg )1 Tools: !!! "error evaluating renderer.run ReferenceError: Can't find variable: comments"
11:16:28  Renderer::Processor      deploy item: memo_6
11:16:28  Renderer::Processor      renderingEndItem item: memo_7
11:16:28  Renderer::Processor      renderingEndItem item: rectangle
11:16:28  Renderer::Processor      renderingEndItem item: memo_8
11:16:28  Renderer::Processor      renderingEndItem item: memo_5
11:16:28  Renderer::Processor      renderingEndItem item: memo_6
11:16:28  Renderer::Processor      checking band: detail
11:16:28  Renderer::Processor      process band: detail
11:16:28  Renderer::Processor      processing item: memo_2
11:16:28  Renderer::Processor      processing item: memo_9
11:16:28  Renderer::Processor      script evaluation error for item 'memo_9' ^ script evaluation error for item 'memo_9': script error at line 1
ReferenceError: Can't find variable: warnings
11:16:28  Renderer::Processor      script evaluation error for item 'memo_9' ^ script evaluation error for item 'memo_9': script error at line 1
ReferenceError: Can't find variable: warnings
11:16:28  Renderer::Processor      processing item: memo_10
11:16:28  Renderer::Processor      script evaluation error for item 'memo_10' ^ script evaluation error for item 'memo_10': script error at line 1
ReferenceError: Can't find variable: warnings
11:16:28  Renderer::Processor      deploy item: memo_2
11:16:28  Renderer::Processor      deploy item: memo_9
11:16:28  Renderer::Processor      deploy item: memo_10
11:16:28  Renderer::Processor      renderingEndItem item: memo_2
11:16:28  Renderer::Processor      renderingEndItem item: memo_9
11:16:28  Renderer::Processor      renderingEndItem item: memo_10
11:16:28  Renderer::Processor      checking band: detail_2
11:16:28  Renderer::Processor      process band: detail_2
11:16:28  Renderer::Processor      processing item: memo_11
11:16:28  Renderer::Processor      processing item: rectangle_1
11:16:28  Renderer::Processor      processing item: memo_12
11:16:28  Renderer::Processor      processing item: memo_13
11:16:28  Renderer::Processor      processing item: memo_14
11:16:28  Renderer::Processor      deploy item: memo_11
11:16:28  Renderer::Processor      deploy item: rectangle_1
11:16:28  Renderer::Processor      deploy item: memo_12
11:16:28  Renderer::Processor      deploy item: memo_13
11:16:28  Renderer::Processor      deploy item: memo_14
11:16:28  Renderer::Processor      renderingEndItem item: memo_11
11:16:28  Renderer::Processor      renderingEndItem item: rectangle_1
11:16:28  Renderer::Processor      renderingEndItem item: memo_12
11:16:28  Renderer::Processor      renderingEndItem item: memo_13
11:16:28  Renderer::Processor      renderingEndItem item: memo_14
11:16:28  Renderer::Processor      checking band: detail_3
11:16:28  Renderer::Processor      process band: detail_3
11:16:28  Renderer::Processor      processing item: memo_15
11:16:28  Renderer::Processor      processing item: memo_16
11:16:28  Renderer::Processor      script evaluation error for item 'memo_16' ^ script evaluation error for item 'memo_16': script error at line 1
ReferenceError: Can't find variable: comments
11:16:28  Renderer::Processor      script evaluation error for item 'memo_16' ^ script evaluation error for item 'memo_16': script error at line 1
ReferenceError: Can't find variable: comments
11:16:28  Renderer::Processor      processing item: memo_17
11:16:28  Renderer::Processor      script evaluation error for item 'memo_17' ^ script evaluation error for item 'memo_17': script error at line 1
ReferenceError: Can't find variable: comments
11:16:28  Renderer::Processor      deploy item: memo_15
11:16:28  Renderer::Processor      deploy item: memo_16
11:16:28  Renderer::Processor      deploy item: memo_17
11:16:28  Renderer::Processor      renderingEndItem item: memo_15
11:16:28  Renderer::Processor      renderingEndItem item: memo_16
11:16:28  Renderer::Processor      renderingEndItem item: memo_17
11:16:28  Renderer::Processor      checking band: detail_4
11:16:28  Renderer::Processor      process band: detail_4
11:16:28  Renderer::Processor      processing item: memo_20
11:16:28  Renderer::Processor      processing item: memo_21
11:16:28  Renderer::Processor      deploy item: memo_20
11:16:28  Renderer::Processor      deploy item: memo_21
11:16:28  Renderer::Processor      renderingEndItem item: memo_20
11:16:28  Renderer::Processor      renderingEndItem item: memo_21
11:16:28  Renderer::Processor      _done
11:16:28  Renderer                 slotProcessorDone
11:16:28  Renderer                 done
11:16:28  ReportCore               Renderer done for report: report without errors
11:16:28  Renderer::Processor      RendererProcessor DTOR
11:16:28  Renderer::Thread         Rendering Thread successfuly destroyed


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Октябрь 09, 2014, 11:07
Получилось получить значение поля, надо было запрашивать [root."field1"]  :)


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Октябрь 09, 2014, 11:25
Логично было бы просто добавить dataset с моделью из кода, или из кода найти dataset по имени и назначить ему модель.
Ну так никто не мешает так сделать  ;)
В ReportCore есть методы для создания датасета по его имени. Потом можно делать с ним все что угодно и добавить в класс отчета ReportInterface::addDataset

Цитировать
Ну и нужен работоспособный пример в документации, так как это один из ключевых моментов.
Все будет, но не сразу. У меня есть еще основная работа, кроме этого проекта. Но готов принять ваш пример   ::)



Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Октябрь 09, 2014, 11:34
Пример уже почти готов, сейчас на нём как раз играюсь.

Сейчас столкнулся с очередной проблемой.

Предположим у меня есть корневая модель с одной строкой, в ней хранятся значения для не табличной части отчета. Когда я в detail указываю эту модель, то поля на этом detail отрабатывают как и задумано.

Но как мне заставить работать поля в header и footer? Там нет привязки к модели и получение данных не работает.

Я уже попробовал сменить им порядок создания, чтобы они отрабатывали после detail с назначенным dataset, но это не помогло.

Может быть я вообще не так делаю привязку данных для не табличной части?

Ну и вопрос по переименованию полей в настройках dataset, как это сделать? А то не очень наглядно получается, когда в отчете используется field1, field2, field3...


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Октябрь 09, 2014, 11:45
В футере, по идее должно работать, так как датасет уже инициализирован. для хидера придется датасет вручную инициализировать в скрипте: root.populate();
Цитировать
Ну и вопрос по переименованию полей в настройках dataset, как это сделать? А то не очень наглядно получается, когда в отчете используется field1, field2, field3...
переадресую это автору датасета Волкову Ивану.


Название: Re: Генератор отчетов CuteReport
Отправлено: Wulff007 от Октябрь 09, 2014, 12:20
Ну и вопрос по переименованию полей в настройках dataset, как это сделать? А то не очень наглядно получается, когда в отчете используется field1, field2, field3...

В QAbstractItemModel есть замечательный метод headerData(). Если через него передавать нужные имена столбцов, то можно отлично реализовать такую возможность. Первый момент здесь, через какую роль получать имена, для меня предпочтительнее через Qt::DisplayRole. И второй, в редакторе реализовать переименование колонок, каким способом(только для тестовой таблицы в редакторе, в runtime будет брать из headerData)? В принципе, на данный момент подойдет редактирование в LineEdit через запятую требуемых наименований колонок. Может быть есть какие мысли по этому поводу?


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Октябрь 09, 2014, 12:45
В общем, не работает root.populate(), не работа использование поля модели из других бандов, не связанных с этой моделью, даже если они исполняются после того банда, который связан.

Пока не знаю что делать.

Вот пример: https://github.com/navrocky/CuteReportModelExample

PS. root.populate() зову в скрипте, ошибок исполнения вроде нет.

Так-же видел в доке можно использовать print() для распечатывания значений, но я не нашел куда этот вывод попадает в редакторе отчетов. В логе, тот что по зеленой стрелочке открывается снизу, пусто.


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Октябрь 09, 2014, 12:50
В QAbstractItemModel есть замечательный метод headerData(). Если через него передавать нужные имена столбцов, то можно отлично реализовать такую возможность. Первый момент здесь, через какую роль получать имена, для меня предпочтительнее через Qt::DisplayRole.

У модели есть метод setHorizontalHeaderLabels, он назначает Qt::DisplayRole, так что, да, её и надо использовать.

только для тестовой таблицы в редакторе, в runtime будет брать из headerData?

Да.

В принципе, на данный момент подойдет редактирование в LineEdit через запятую требуемых наименований колонок. Может быть есть какие мысли по этому поводу?

В качестве заткнуть дырку такое решение подойдет.

А логичнее при добавлении спрашивать/предлагать имя колонки с помощью QInputDialog. И добавить кнопку для переименования выделенной колонки, также в контекстное меню по колонке тоже можно положить это действие.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Октябрь 09, 2014, 12:50
В общем, не работает root.populate(), не работа использование поля модели из других бандов, не связанных с этой моделью, даже если они исполняются после того банда, который связан.
я ошибся, надо:
root.populate();
root.firstRow();

Сделаю в следующей версии чтобы это делалось автоматически.

Цитировать
Так-же видел в доке можно использовать print() для распечатывания значений, но я не нашел куда этот вывод попадает в редакторе отчетов. В логе, тот что по зеленой стрелочке открывается снизу, пусто.
оно выводится в консоль


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Октябрь 09, 2014, 14:36
я ошибся, надо:
root.populate();
root.firstRow();

Да, помогло, спасибо! Но после отработки details с этой моделью данные опять сбрасываются. Но это уже не проблема, уберу просто эту связь.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Октябрь 09, 2014, 23:17
Да, помогло, спасибо! Но после отработки details с этой моделью данные опять сбрасываются. Но это уже не проблема, уберу просто эту связь.
Это не баг, это нормальное поведение. Движок переводит курсор датасета на следующую позицию при обработке банда или группы бандов, присоединенных к датасету.
Так что тут либо переводить курсор вначало вручную, либо создать 2 одинаковых датасета.


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Ноябрь 11, 2014, 19:43
Не соображу, а как мне загасить панели по условию?

У меня пустой список, и я получаю табличку с одной строкой, в которой все поля "undefined", а хотелось бы вообще скрыть табличку в этом случае.

Сперва подумал, что из скрипта это сделать можно, но свойство visible у band я не нашел. Что делать?

ЗЫЖ RTFM пробовал.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 12, 2014, 01:23
есть свойство "enabled"


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Ноябрь 12, 2014, 10:50
есть свойство "enabled"

Похоже, что оно работает только для Memo. На Details, Rectangle не производит никакого эффекта - выводятся как ни в чем не бывало.

Еще не смог доступиться к значению поля из модели в скрипте, в доке это не описано. Пробовал:
Код:
memo.text = root["field1"]
memo.text = root."field1"
memo.text = root.field1

Получилось так:
Код:
memo.text = root.value("field1")

Это бы тоже надо в доке отразить, базовая функциональность как-никак.


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 21, 2014, 16:06
А как допустим сразу отправить на печать отчёт.
((CuteReport::ReportPreview*)reportPreview)->show();
((CuteReport::ReportPreview*)reportPreview)->run();
((CuteReport::ReportPreview*)reportPreview)->print();
что-то вроде такого, можно даже без отображения.

И не пойму как инициализировать dataset из кода


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 23, 2014, 00:42
Похоже, что оно работает только для Memo. На Details, Rectangle не производит никакого эффекта - выводятся как ни в чем не бывало.
Баг, испрвлю к следующему релизкандтдату

Код:
memo.text = root."field1"
memo.text = root.field1
memo.text =root.value("field1")
Все 3 варианта должны работать. Багрепорт и будет исправлено к релизкандидату.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 23, 2014, 00:57
А как допустим сразу отправить на печать отчёт.
И не пойму как инициализировать dataset из кода

в исходниках есть код рабочего консольного клиента, можно посмотреть

Код:
m_reportCore->print(reportUrl);
или
Код:
m_reportCore->print(ReportInterface* report);


например:
m_reportCore->print("file://myReport.qtrp");

Инициализировать:
Код:
DatasetInterface * myDataset = reportCore->createDatasetObject(myReport, "Model");
myDataset->setProperty(propertyName, value);
myReport->addDataset(myDataset);
m_reportCore->print(myReport);


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 24, 2014, 09:12
Код:
m_reportCore->print(reportUrl);
или
Код:
m_reportCore->print(ReportInterface* report);

сделал так, в отладке пишет
ReportCore               Printing done for report: report without errors

но на принтер ничего не отсылается, и окно печати не показывается.
Как вариант, как окно печати вызвать из reportPreview?
функция print там тоже ничего не вызывает

upd.
а кажется понял , нужно получить список принтеров и задать их reportCore

upd.
а нет, не так..
 printerModules это список каких-то общих драйверов(который только один Standard::Printer )?
а как выбрать уже конечный принтер?


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 24, 2014, 22:03
Возможно баг с дефолтовыми настройками принтера. Надо добавить объект принтера прямо в объект отчета и проверить так. выставить свойство "showDialog" = true.


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 27, 2014, 10:05
Возможно баг с дефолтовыми настройками принтера. Надо добавить объект принтера прямо в объект отчета и проверить так. выставить свойство "showDialog" = true.

получилось что нужно в начале отрендерить reportPreview , иначе печает криво, причём нужно дождаться выполнения run.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 27, 2014, 10:08
Можно подробнее? Рендерил и печатал из виджета Preview? или из кода?


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 27, 2014, 11:13
Можно подробнее? Рендерил и печатал из виджета Preview? или из кода?

Код:
 CuteReport::ReportPreview *reportPreview = new CuteReport::ReportPreview();
  ((CuteReport::ReportPreview*)reportPreview)->setReportCore(m_coreReport);
  ((CuteReport::ReportPreview*)reportPreview)->connectReport(m_reportObject);
  ((CuteReport::ReportPreview*)reportPreview)->setMinimumWidth(1200);
  ((CuteReport::ReportPreview*)reportPreview)->run();
  ((CuteReport::ReportPreview*)reportPreview)->showFullScreen();

  QEventLoop waitLoop;
  QTimer::singleShot(2000, &waitLoop, SLOT(quit()));
  waitLoop.exec();
 ((CuteReport::ReportPreview*)reportPreview)->slotFitWidth();
  m_coreReport->print(m_reportObject);
  ((CuteReport::ReportPreview*)reportPreview)->close();


Название: Re: Генератор отчетов CuteReport
Отправлено: gil9red от Ноябрь 27, 2014, 11:23
/offtop

Код:
CuteReport::ReportPreview *reportPreview = new CuteReport::ReportPreview();
  ((CuteReport::ReportPreview*)reportPreview)->setReportCore(m_coreReport);
...

Объясните пожалуйста, в чем смысл приводить указатель типа CuteReport::ReportPreview к типу CuteReport::ReportPreview? :)
да и этот способ приведения остался от си, и в с++ рекомендуется использовать операторы *_cast (static_cast, dynamic_cast, ...)



Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 27, 2014, 11:40
Код:
 ((CuteReport::ReportPreview*)reportPreview)->run();



Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 27, 2014, 11:44
Код:
 ((CuteReport::ReportPreview*)reportPreview)->run();

Мне кажется эта строка тут лишняя. Как только объект отчета соединен сигналом с виджетом, в виджете автоматически появится превью при вызове метода ReportCore::print() одновременно с распечатыванием.

Дай мне знать если не сработает.


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 27, 2014, 11:52
Код:
 ((CuteReport::ReportPreview*)reportPreview)->run();

Мне кажется эта строка тут лишняя. Как только объект отчета соединен сигналом с виджетом, в виджете автоматически появится превью при вызове метода ReportCore::print() одновременно с распечатыванием.

Дай мне знать если не сработает.
попробовал, сразу закрывается как заканчивается таймаут, не печатает, не отображает окно принтера.
выводит .:
13:51:55  ReportCore               Printing done for report: report without errors


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 27, 2014, 12:30
а как по нормальному узнать что рендеринг закончился,
так что-то ругается, хотя в других местах аналогично работает
Код:
connect(m_coreReport,&CuteReport::ReportCore::rendererDone,this,
            [=](const QString & reportUrl, bool success){
        waitLoop.quit();
    });
cannot convert '<lambda closure object>MainWindow::on_pushButton_clicked()::__lambda7{((MainWindow*)this)}' (type 'MainWindow::on_pushButton_clicked()::__lambda7') to type 'const QObject*'
     });
      ^


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Ноябрь 27, 2014, 13:09
нормально отловить сигнал rendererDone. Сделайте это правильно как написано в документации по Qt


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 28, 2014, 12:45
c сигналом разобрался
а вот ещё почему то под  Qt5.3 MSVS2013 win7 , не собирается, пишет:


C:\work\alfox-report2\src\plugins\standard\core_plugins\datasets\model\models\testmodel.cpp:126: ошибка: C2039: toAscii: не является членом "QString"
C:\Qt\5.3\msvc2013\include\QtCore/qstring.h(213): см. объявление "QString"

поменял на toLatin1() , пишет тож самое, хотя там нет строки toAscii  :-\


Название: Re: Генератор отчетов CuteReport
Отправлено: gil9red от Ноябрь 28, 2014, 13:43
c сигналом разобрался
а вот ещё почему то под  Qt5.3 MSVS2013 win7 , не собирается, пишет:


C:\work\alfox-report2\src\plugins\standard\core_plugins\datasets\model\models\testmodel.cpp:126: ошибка: C2039: toAscii: не является членом "QString"
C:\Qt\5.3\msvc2013\include\QtCore/qstring.h(213): см. объявление "QString"

поменял на toLatin1() , пишет тож самое, хотя там нет строки toAscii  :-\

Потому что разные версии Qt :)
На 4-й версии есть у QString'а метод toAscii: http://qt-project.org/doc/qt-4.8/qstring.html#toAscii
А вот в 5-й версии уже нет: http://qt-project.org/doc/qt-5/qstring.html


Название: Re: Генератор отчетов CuteReport
Отправлено: lightX2 от Ноябрь 28, 2014, 14:16
c сигналом разобрался
а вот ещё почему то под  Qt5.3 MSVS2013 win7 , не собирается, пишет:


C:\work\alfox-report2\src\plugins\standard\core_plugins\datasets\model\models\testmodel.cpp:126: ошибка: C2039: toAscii: не является членом "QString"
C:\Qt\5.3\msvc2013\include\QtCore/qstring.h(213): см. объявление "QString"

поменял на toLatin1() , пишет тож самое, хотя там нет строки toAscii  :-\

Потому что разные версии Qt :)
На 4-й версии есть у QString'а метод toAscii: http://qt-project.org/doc/qt-4.8/qstring.html#toAscii
А вот в 5-й версии уже нет: http://qt-project.org/doc/qt-5/qstring.html

я знаю, я ж поменял на toLatin1()

с mingw собирается нормально
upd.
с новым Qt5.4 собирается со всеми компиляторами, тогда норм


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Декабрь 18, 2014, 18:29
Пример с диаграммой (simple_chart) не работает, в нём нет модели с данными.

Я сам не соображу как должна выглядеть модель. Alex можешь помочь?


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Декабрь 19, 2014, 06:07
Chart пока нерабочий


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Декабрь 19, 2014, 10:10
Сам chart или пример?


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Декабрь 19, 2014, 10:14
Чарт


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Декабрь 19, 2014, 10:24
Ладно, попробую Qwt прикрутить, мне как оказалось даже не чарт нужен а графики )


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Март 15, 2015, 04:01
Выкатил RC4 который включает исправления недочетов найденных navrocky


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Апрель 03, 2015, 17:30
И сайтец обновили. Замечательно!

Как доберусь до причесывания отчётов, буду проверять


Название: Re: Генератор отчетов CuteReport
Отправлено: juvf от Апрель 07, 2015, 09:31
CuteReport мне не понравился.
На вкус и цвет фломастеров, как известно, пристрастия разные, но, так как наша цель сделать максимально удобный репорт, могу я поинтересоваться чем именно не понравился?
Да какой-то он грамоздкий...  Быстрее свой отчет купаинтом накидать, чем разобраться с вашим генератором. Потратил кучу времени, на ваш генератор, потом наверно за час накидал паинтером. Нет доки на русском. Нет туторила в 5 шагов. Я не смог сделать альбомный разворот. По мойму нет формата А3, А2, и т.п.... Я так и не понял, как прикрутить данные из программы к отчету... Есть несостыковки в мануале и программе, например "There are some datasets provided in the basic CuteReport edition: SQLDataset, CSVDataset, FilesystemDataset, ModelDataset." А в программе это есть Standart::Model и т.п. Почему бы в программе и мануале не дать одинаковое название?

Мне показалось, что порог вхождения в этот генератор гораздо выше, чем набивка отчета в ручную.... это какой-то оверинженеринг. Или это не то, что мне нужно....
Примеры... какие-то нереальные, ляпистые, имхо. Было бы неплохо туториал по генерации отчета более приближенного к жизни, например диагностическая карта технического осмотра транспортного средства или результат медобследования больного.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Апрель 07, 2015, 09:50
В общем согласен с вашими замечаниями. Но стоит сделать скидку на то что это была все еще альфа и названия объектов и интерфейсы менялись, так что редактировать каждый раз документацию смысла не было. В данный момент ближе к первому релизу она обновляется и будет и на русском языке тоже.

Если вам нужен статический отчет, который никогда не поменяется, и содержит простые таблицы, то, вероятно, нету смысла и в самом деле тянуть библиотеку. На данном этапе все наши усилия направлены на развитие функционала, а не на упрощение для пользователя. Но конечная цель - cовместить и то и другое насколько возможно. Работа над жэтим начнется после релиза.

Насчет примеров, есть один уже с инвойсом. Буду признателен за образцы (хотя бы скриншоты с затертыми данными)- включу в стандартные примеры.
Форматы страниц все есть в свойствах страницы (мышом на пустом поле страницы и справа в редакторе свойств). Альбомный разворот там же. Впоследствии будут сделаны хелперы к каждому объекту, что значительно упростит роботу.

Спасибо за замечания.


Название: Re: Генератор отчетов CuteReport
Отправлено: juvf от Апрель 07, 2015, 10:59
Я понимаю, что это альфа.... не хочу сказать, что продукт плохой....  Просто высказал мнение. Конечно, за такую работу респект. Возможно к следующей моей потребности в отчете будет бэтта, опробую.

Пример моего отчета в прикреплении.

Кстати, в эбауте нету версии, нету номера или даты билда - это не есть гуд.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Апрель 07, 2015, 11:08
Это не последний rc4. У последнего темка серая и добавлены инструменты в сверху.

Свойства страницы прямо справа на скриншоте который вы удалили: format, paperSize и  orientation.
График просто паинтером нарисован?
В CuteReport пока что нету такого компонета чтобы рисовать графики.

Про About - хорошая мысль. Сделаем.


Название: Re: Генератор отчетов CuteReport
Отправлено: juvf от Апрель 07, 2015, 12:00
Свойства страницы прямо справа на скриншоте который вы удалили: format, paperSize и  orientation.
Да, нашел, поэтому и удалил.

Цитировать
График просто паинтером нарисован?
Нет. Это QwtPlot. В библиотеке Qwt есть класс QwtPlotRenderer  (http://qwt.sourceforge.net/class_qwt_plot_renderer.html), у него есть метод

void    QwtPlotRenderer::render (QwtPlot *, QPainter *, const QRectF &rect) const;

В принцепе ни чего сложного.... только нужно передать указатель на QPainter, и координаты rect, ну и сам график QwtPlot*. Наверника у QCustomPlot (http://www.qcustomplot.com/) есть подобные методы. Может как-нибудь прикрутить вставку в CuteReport через QPainter? Можно тогда будет графики (гистограммы, спектограммы.... вобще графики любой сложности и красотости) вставлять из Qt приложений в CuteReport, не имея в CuteReport своего компонента для графиков.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Апрель 07, 2015, 12:29
Хорошая идея! надо будет обдумать как это сделать


Название: Re: Генератор отчетов CuteReport
Отправлено: navrocky от Апрель 08, 2015, 10:38
Добавлю еще от себя, что диалог открытия отчета в дизайнере очень неудобен. В большинстве случаев это открытие файла и хочется видеть стандартный диалог открытия файла а не тот, что сейчас есть.

+ список последних открываемых файлов.


Название: Re: Генератор отчетов CuteReport
Отправлено: AlFoX от Апрель 27, 2015, 11:02
Принимаются пожелания что именно улучшить. Стандартный невозможно использовать так как прямого доступа к файловой системе у CuteReport нету и не будет. Все через абстракцию. Так что вариант только улучшать имеющайся


Название: Re: Генератор отчетов CuteReport 1.1
Отправлено: AlFoX от Август 23, 2015, 11:08
Вышла версия 1.1


Название: Re: Генератор отчетов CuteReport 1.1.1 (обновляется)
Отправлено: AlFoX от Сентябрь 08, 2015, 04:51
Чтобы не захламлять форум, буду обновлять тему.

Вышел релиз 1.1.1 Qt генератора отчетов. Среди изменений - поддержка Mac OS X


Название: Re: Генератор отчетов CuteReport 1.1.1 (обновляется)
Отправлено: tability от Октябрь 18, 2015, 10:41
версия 1.1.1 ubuntu trusty qt5.5.0 (установка с офф.сайта. run-пакет).
1) При сборке типа "APP" нельзя запустить дизайнер. Он требует библиотеки, хотя они лежат в папке рядом.
2) есть ли возможность влючить дизайнер в состав своего приложения как widget?


Название: Re: Генератор отчетов CuteReport 1.1.1 (обновляется)
Отправлено: AlFoX от Октябрь 20, 2015, 02:18
версия 1.1.1 ubuntu trusty qt5.5.0 (установка с офф.сайта. run-пакет).
1) При сборке типа "APP" нельзя запустить дизайнер. Он требует библиотеки, хотя они лежат в папке рядом.
2) есть ли возможность влючить дизайнер в состав своего приложения как widget?

на официльном сайте нет run-пакета.

1. Используйте LD_PRELOAD или LD_LIBRARY_PATH
2. Нет.


Название: Re: Генератор отчетов CuteReport 1.1.1 (обновляется)
Отправлено: __Heaven__ от Октябрь 23, 2015, 10:04
Здравствуйте! В данный момент выбираю библиотеку, через которую мог бы выгружать данные из программы в каком-либо формате (xls, pdf, html) подойдёт ли эта библиотека для меня. Хотел бы ещё узнать, какие преимущества и недостатки этой библиотеки в сравнении с QtRPT и запустится ли она на андроиде.


Название: Re: Генератор отчетов CuteReport 1.1.1 (обновляется)
Отправлено: AlFoX от Октябрь 24, 2015, 23:47
Здравствуйте! В данный момент выбираю библиотеку, через которую мог бы выгружать данные из программы в каком-либо формате (xls, pdf, html) подойдёт ли эта библиотека для меня. Хотел бы ещё узнать, какие преимущества и недостатки этой библиотеки в сравнении с QtRPT и запустится ли она на андроиде.

Да, в PDF можно. XLS врядли будет, так как формат зыкрытый. HTML в планах.
Конкретно с указанным вами продуктом я незнаком, поэтому провести глубокое сравнение невозможно. Документация и бинарники доступны и вы можете провести исследование и сравнить самостоятельно. Результатами исследования можете поделиться в этой теме.
Теоретически на Андроиде должно запускаться так как сибирается с Qt5.4, но Андроид не является официально поддержиаемой платформой пока что, так что результат не гарантируется.




Название: Re: Генератор отчетов CuteReport 1.2 (обновляется)
Отправлено: AlFoX от Январь 18, 2016, 04:40
Релиз 1.2

Модуль поддержки прописи числа позволяет переводить число в его прописной вид, как например, "123002" -> "сто двадцать три тысячи два". Или для денег: "125" -> "сто двадцать пять долларов США". Возможно указать род исчисляемой единицы. При этом автоматически определяется множественность числа. Поддерживаются практически все распространенные языки.

Модуль Диаграмм поддерживает гистограммы, но ведется работа по поддержке других типов.

Полный список изменений версии 1.2:

НОВОЕ: Демонстрационное приложение для показа примеров отчетов
НОВОЕ: Возможность редактирования данных в предпросмотре (базовые возможности)
НОВОЕ: Новый модуль "ScriptSpellout" для представления чисел, валют, денежных сумм прописью на различных языках в правильном роде и множественности. Смотри документацию и Демонстрационное приложение секция: General->Invoice. (pro version)
НОВОЕ: Сохранение списка предыдущих отчетов в дизайнере
НОВОЕ: Новое свойство страницы "resetPageNumber" для опционального сброса сквозной нумерации страниц.
НОВОЕ: Несколько уровней детализации при представлении элемента на шаблоне страницы: Контент полностью, Только имя и пр. Мемо элемент теперь может показывать на шаблоне только свое имя, таким образом избегая нагромождения текста на шаблоне.
ОБНОВЛЕНИЕ: Обновление документации: "Сигналы в скрипте"
ОБНОВЛЕНИЕ: Обновление документации: "Функции" -> "Функции прописи"
ОБНОВЛЕНИЕ: Показ дизайнером предупреждения перед удалением объекта Хранилища, Рендерера, Принтера
ОБНОВЛЕНИЕ: Объединение cutereport и cutereport_cli. Используйте параметр запуска -g для старта в графическом режиме (дизайнер шаблонов)
ОБНОВЛЕНИЕ: Подержка гистограмм (pro version)
ОБНОВЛЕНИЕ: Обновление диаграмм: поддержка статичных и динамичных данных, обновление хелпера (pro version)
ИСПРАВЛЕНИЕ: Исправление хелпера для модуля штрихкодов BarcodeExt (pro version)


Название: Re: Генератор отчетов CuteReport 1.2 (обновляется)
Отправлено: AlFoX от Октябрь 03, 2016, 05:30
Релиз 1.3

Прошло почти 9 месяцев с последнего релиза CuteReport.
И вот мы малыш родился! :) Долгожданный и с большой радостью!
Итак, что нового этот релиз приносит пользоателям?
Наиболее важные новшества это: многоязычные отчеты, динамические диалоги и наследование отчетов.

Первое, многоязычный отчет. Такой отчет может быть переведен и сгенерирован на нескольких языках
для того чтобы обеспечить ваших клиентов счетом или чеком на родном языке. Во многих штатах США
довольно рспространено в учреждениях иметь дополнительный язык в дополнение к основному английскому,
как например испанский. Такое же в других странах с несколькими используемыми языками как, например,
в Канаде. Таким образом вам не нужно путаться с несколькими шаблонами на разных языках, поддержка
которых может представлять определенные трудности. Просто делайте один отчет с двумя или более языками.
В Дизайнере CuteReport имеется простой инструмент, который будет удобен и полезен переводчикам для
перевода отчета с оригинального языка на другие.

Второе, с использованием динамических диалогов вы можете получить необходимые данные от пользователя
перед построением отчета. Это может быть язык, возраст или любое другое значение, которое может быть
использовано в вычислениях генератора отчета. Вы можете рассмотреть несколько примеров в "Demo" приложении.

И наконец, наследование отчетов предоставляет удобство при поддержке массива корпоративных отчетов,
которые могут содержать общую часть, как напрмер шапку с логотипом. Таким образом если вам нужно
сменить логотип или скорректировать шапку, вам не придется менять все множество отчетов. Поправьте
базовый отчет и все отнаследованные автоматически обновятся.

Ниже приводится полный список изменений.
Как всегда, если у вас возникли какие-то проблемы, замечания, пожелания, без колебаний и незмедлительно обращайтесь к нам!

Список изменений версии 1.3

  • НОВОЕ: добавлен модуль перевода (про версия)
  • НОВОЕ: добавлен модуль форм для построения динамических диалогов (про версия)
  • НОВОЕ: добвлен механизм разбиваиния элементов при переносе на следуюшую колонку или страницу (про версия)
  • НОВОЕ: поддержка разбивки добавлена в элемент Мемо(про версия)
  • НОВОЕ: добавлена возможность передавать в качестве параметра отчета указатель на QObject
  • НОВОЕ: добавлен интерфейс PainterDelegate чтобы предостваить возможность вашей программе рисовать на
                      элементах отчета
  • НОВОЕ: добавлен интерфейс ScriptDelegate чтобы предостваить возможность вашей программе экпортировать
                      свои функции и объекты в скриптовый движок генератора отчетов CuteReport
  • НОВОЕ: добавлены несколько примеров кода для манипуляции генератором отчетов из вашей программы
                     Смотри "examples/code/"
  • НОВОЕ: наследование отчетов: теперь отчет может наследовать объекты из другого отчета. Эти объекты будут
                      автоматически обновлены при обновлении базового отчета.
  • НОВОЕ: новый контейнер Index для автоматического построения Содержания
  • НОВОЕ: Сохранение/Загрузка выбранной группы элементов в/из внешнего файла для дальнейшего использования в других отчетах.
  • ОБНОВЛЕНИЕ: Демо приложение теперь может показывать отчеты на нескольких языках, определенных в отчете
  • ОБНОВЛЕНИЕ: Обновлена документация: модуль "Перевод" в Дизайнере
  • ОБНОВЛЕНИЕ: Обновлена документация: модуль "Формы" в Дизайнере
  • ОБНОВЛЕНИЕ: Обновлена документация: использование Форм в машине скриптов
  • ОБНОВЛЕНИЕ: Обновлена документация: добавлен тип форматирования "iso" для даты и времени
  • ОБНОВЛЕНИЕ: SqlDataset: добавлены параметры базы данных
  • ОБНОВЛЕНИЕ: CSVDataset: добавлена возможност редактирования и сохранения текстовых данных
  • ОБНОВЛЕНИЕ: нажатие клавиши Del в Инспекторе Объектов теперь удаляет выделенные объекты
  • ОБНОВЛЕНИЕ: консольное приложение: добавлен параметр для установки размеров превью окна
  • ОБНОВЛЕНИЕ: новые свойства в элементах Memo и MemoExt: lineSpacing (расстояние между строками) и textIndent (отступ красной строки)
  • ИСПРАВЛЕНИЕ: SF#31 исправлена ошибка компиляции Qt 4.6  
  • ИСПРАВЛЕНИЕ: нативные диалоги Qt и ОС теперь показывают правильный путь во время сохраниеня отчета при выходе из Дизайнера
  • ИСПРАВЛЕНИЕ: иправлено падение программы при удалении элементов с дочерними элементами
  • ИСПРАВЛЕНИЕ: небольшие исправления в Демо приложении
  • ИСПРАВЛЕНИЕ: исправление множества других ошибок


Название: Re: Генератор отчетов CuteReport 1.3 (обновляется)
Отправлено: AlFoX от Январь 13, 2017, 09:19
Релиз 1.3.1

Полный список изменений в версии 1.3.1:

  • ИСПРАВЛЕНИЕ: не запускалось с ярлыка на рабочем столе
  • ИСПРАВЛЕНИЕ: ошибка обработки пустых страниц в Extended::Renderer
  • ИСПРАВЛЕНИЕ: регрессия в отчете "Cover Page"
  • ИСПРАВЛЕНИЕ: редактор главного скрипта не устанавливал флаг "dirty" во время редактирования
  • ИСПРАВЛЕНИЕ: регрессия в Barcode с обрезанием правой и нижней стороны
  • ИСПРАВЛЕНИЕ: неправильное выделение элемента при вращении в режиме редактирования
  • ИСПРАВЛЕНИЕ: регрессия в MemoExt когда было невозможно выбрать поле датасета в выпадающем списке
  • ИСПРАВЛЕНИЕ: перемещение элемента клавиатурными стрелками
  • ИСПРАВЛЕНИЕ: формат первой страницы в отчете "Table of Contents" изменен с A4 на Letter для соответствия другим страницам
  • ИСПРАВЛЕНИЕ: регрессия с необновляемым выделением элемента при изменении его геометрии мышкой
  • ИСПРАВЛЕНИЕ: ошибка детектирования вычисляемых выражений в HTML тексте
  • ИСПРАВЛЕНИЕ: теперь в SQL датасете используется следующий формат пользовательких переменных: ${имяПеременной} в квадратных скобках []. Пример:[${имяПеременной}]
  • ИСПРАВЛЕНИЕ: тип переменной теперь может быть изменен в редакторе отчета
  • ИСПРАВЛЕНИЕ: ошибка рендеринга элемента "Index" в некоторых случаях
  • ИСПРАВЛЕНИЕ: регрессия отображения ярлыка "замок" для отнаследованных элементов
  • ИСПРАВЛЕНИЕ: падение отчета "Table of Contents" в некоторых случаях
  • ИСПРАВЛЕНИЕ: пропадание подменю Save/Restore для групп элементов
  • ИСПРАВЛЕНИЕ: нумерация страниц в отчете "Table of Contents"
  • ИСПРАВЛЕНИЕ: восстановление предыдущей геометрии окна в Демо Приложении
  • ИСПРАВЛЕНИЕ: переменная "tr" теперь появляется только если в отчете есть хотя бы один дополнительный перевод
  • ИСПРАВЛЕНИЕ: язык по умолчанию в отчете "Forms"
  • ИСПРАВЛЕНИЕ: ошибка активирования Сигнал-Слот редактора в Редакторе Форм
  • ИСПРАВЛЕНИЕ: ошибка активирования кнопки "Удалить" в Редакторе Форм
  • ИСПРАВЛЕНИЕ: ошибка центрирования формы в Редакторе Форм при загрузке сохраненного отчета
  • ИСПРАВЛЕНИЕ: другие мелкие ошибки в Редакторе Форм
  • ИСПРАВЛЕНИЕ: сортировка контейнеров и элементов в выпадающем списке в порядке расположения на странице
  • ИСПРАВЛЕНИЕ: пробел справа и снизу при закраске фона в элементах для Qt5
  • ИСПРАВЛЕНИЕ: выравнивание всех панелей инструментов по высоте
  • ИСПРАВЛЕНИЕ: исправлены примеры кода
  • ИСПРАВЛЕНИЕ: множество прочих исправлений