Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 368 сообщений
Cообщения с меткой

reports - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Может ли веб-репортинг не уступать десктопному или немного о DevExpress ASP Reporting 15.1

Понедельник, 06 Июля 2015 г. 12:18 (ссылка)





DevExpress Reporting — продукт от DevExpress, предоставляющий инструменты для быстрой, легкой и удобной работы с отчетами и документами. В недавно вышедшей версии 15.1, о которой мы уже писали на Хабре, появилось множество улучшений для всех поддерживаемых платформ — WPF, WIN и ASP, и мы предлагаем ознакомиться с наиболее важными из них для ASP-версии.



Главная цель, к который мы стремились — чтобы веб-репортинг имел такой же широкий и гибкий набор инструментов для работы с отчетами, как и в WIN-версии. Поэтому в этой статье мы упомянем как о HTML5/JS Document Viewer — новом клиентском компоненте для просмотра отчетов, так и о различных улучшениях для уже выпущенного ASP.NET & MVC Report Designer.



HTML5/JS Document Viewer



Новый, современный и быстрый — таким является наш новый режим просмотра отчетов HTML5/JS Document Viewer, который мы представили в этом релизе. Он имеет массу преимуществ и усовершенствований, о которых мы и расскажем.



Начать использование нового режима просмотра отчетов очень легко, даже если уже есть настроенные компоненты ASP.NET Viewer. Для этого в окне настроек достаточно выбрать “Switch to HTML 5 Document Viewer”, там же можно переключиться и обратно.







Одним из преимуществ нового HTML 5 Viewer является возможность пользователям начать работу с документом сразу же после отображения компонента на странице. Это стало возможным благодаря асинхронной загрузке отчетов, которая позволяет мгновенно отображать уже загруженную часть документа. Прогресс при этом отслеживается в панели в нижнем левом углу, и при необходимости можно прекратить загрузку.







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







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







Многостраничный режим удобен для охвата нескольких страниц одним взглядом.







Есть и поиск внутри отчета, который не только быстро найдет требуемый текст с заданными параметрами (например, поиск целого слова, с учетом или без прописных букв), но и поможет удобно перемещаться по результатам этого поиска.







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







Навигацию по отчету можно осуществлять не только с помощью стрелок “Вперед/Назад” и выбора страницы, но и с помощью специального построенного дерева документа.







Эти и многие другие возможности можно уже сейчас попробовать и оценить, а также узнать о них больше из этого видео:









ASP.NET & MVC Report Designer



В прошлом релизе 14.2 мы выпустили новый редактор отчетов — ASP.NET & MVC Report Designer, представив в нем огромное количество функций и возможностей. Но в этом релизе мы хотели сделать его еще лучше, еще ближе по функционалу к WIN-версии, поэтому дополнили его многими и многими полезными функциями, речь о которых пойдет ниже. С полным же списком изменений можно ознакомиться здесь.



Редактировать отчеты стало удобнее благодаря встроенному Script Editor — одному из новых улучшений для ASP.NET & MVC Report Designer. Благодаря редактору сценариев можно непосредственно из редактора добавить обработку различных событий и сценариев для отчета на одном из этих языков: C#, Visual Basic .NET или JScript .NET.







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







Одним из новых инструментов, призванных облегчить работу с данными и запросами к ним является Data Source Wizard. С ним просто создать сложные SQL-запросы как вручную, так и с применением визуального конструктора запросов, встроенного в дизайнер.







Еще одним средством для упрощения работы с данными является Filter Editor. Теперь вместо ввода вручную строки с условиями фильтрации данных, их можно настроить в редакторе фильтров.







Он организует и визуализирует все условия в виде дерева, что позволяет просто и удобно создавать и редактировать их.







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







А легко и без усилий составить правила форматирования поможет новый редактор выражений.





Заключение



Оказывается, ASP-версия может быть ничуть не хуже по функционалу WIN-версии, и с каждым новым релизом разница в инструментах между ними будет все больше стираться. Для того, чтобы убедиться в этом, достаточно попробовать и сравнить демки для этих версий здесь.



Мы постарались упомянуть самые важные и заметные из улучшений в DevExpress ASP Reporting 15.1. С ними и остальными, не менее полезными, можно ознакомиться здесь.

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/261879/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Отчёты для NORD POS. Часть 2

Суббота, 24 Января 2015 г. 16:28 (ссылка)

Берём jrxml шаблон и устанавливаем в приложение



В первой части я рассказал о том, как подготовить в iReport шаблон отчёта для библиотеки JasperReports. А эта статья посвящена тому, как получившийся шаблон интегрировать непосредственно в приложение NORD POS. И если в первой части программа нужна была только, как источник данных для построения примера отчёта по справочнику товаров, то в данной статье она будет необходима для интеграции отчёта в интерфейс приложения, а также для демонстрации возможностей взаимодействия бизнес логики приложения и элементов шаблона библиотеки JasperReports.







Кроме этого, пришлось разделить статью на две части из-за того, что при подготовки материала я обнаружил ошибку печати отчёта в версии 3.0.1CE. Ошибка возникала из-за неправильного вызова диалога выбора принтера при использовании не стандартного оформления из Swing Look&Feel библиотеки Insubstantial. Ошибка не возникала при использовании темы Metal или оформления в стиле операционной системы. Но, так как в NORD POS по-умолчанию используется нестандартная тема CremeSkin, то для написания этой части необходимо было устранить данный баг и выпустить обновлённую версию NORD POS 3.0.2CE. И именно эту версию мы будем использовать во второй части статьи.



Размещаем шаблон



Чтобы установить шаблон отчёта не обязательно скачивать исходники всего приложения, достаточно сохранить файл из iRepot в папке reports установленного приложения указав путь ./reports/io/example/reports/ для него. Кроме того, необходимо создать BeanShell скрипт для инициализации шаблона в NORD POS, а также ресурс Properties локализации текстовых полей шаблона.







Пишем скрипт



Код скрипта должен инициализировать наш шаблон отчёта в программе и передать значения из базы данных приложения в поля формы. И так в первой строке скрипта делаем инициализацию класса PanelReportBean(), отвечающего за взаимодействие с библиотекой JasperReports:

report = new com.openbravo.pos.reports.PanelReportBean();


Задаём для него основные параметры:

report.setTitleKey("Menu.ExtProducts"); // Задаём название панели
report.setReport("/io/example/reports/productsext"); // Указываем на файл формирующего отчёт
report.setResourceBundle("io/example/reports/productsext_messages"); // и на файл локализации


И строку SQL-запроса для получения значения из базы данных:

report.setSentence("SELECT"+
" PRODUCTS.NAME AS PRODUCT_NAME" +
", PRODUCTS.REFERENCE AS PRODUCT_REFERENCE" +
", PRODUCTS.PRICESELL AS PRODUCT_PRICESELL" +
", PRODUCTS.CATEGORY AS CATEGORY_ID" +
", CATEGORIES.NAME AS CATEGORY_NAME" +
", PRODUCTS.TAXCAT AS TAX_ID" +
" FROM PRODUCTS" +
" LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID" +
" LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID" +
" LEFT OUTER JOIN TAXES ON TAXCATEGORIES.ID = TAXES.CATEGORY" +
" WHERE ?(QBF_FILTER)" +
" ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");


Здесь нужно обратить внимание на условие WHERE ?(QBF_FILTER), оно позволяет вставить в запрос фильтр из интерфейса приложения. Например для справочника товаров это ProductFilter() с следующими полями параметров:

report.addParameter("PRODUCTS.NAME");
report.addParameter("PRODUCTS.PRICEBUY");
report.addParameter("PRODUCTS.PRICESELL");
report.addParameter("PRODUCTS.CATEGORY");
report.addParameter("PRODUCTS.CODE");
report.addQBFFilter(new com.openbravo.pos.ticket.ProductFilter());


С помощью фильтра пользователь NORD POS сможете сделать выборку по цене товара, его категории или использую регулярное выражение SQL выбрать товар только с определённым названием. Например, выражение А%, даст нам список товаров начинающихся только на букву «А» из любой категории.



В конце нашего скрипта обязательно нужно указать поля, которые будут использоваться в jrxml-шаблоне для построения отчёта:

report.addField("PRODUCT_NAME", com.openbravo.data.loader.Datas.STRING);
report.addField("PRODUCT_REFERENCE", com.openbravo.data.loader.Datas.STRING);
report.addField("PRODUCT_PRICESELL", com.openbravo.data.loader.Datas.DOUBLE);
report.addField("CATEGORY_ID", com.openbravo.data.loader.Datas.STRING);
report.addField("CATEGORY_NAME", com.openbravo.data.loader.Datas.STRING);
report.addField("TAX_ID", com.openbravo.data.loader.Datas.STRING);

report;


И вызвать средствами BeanShell скрипта созданный нами отчёт.



Полный готовый текст скрипта
report = new com.openbravo.pos.reports.PanelReportBean();



report.setTitleKey(«Menu.ProductList»); // Задаём название панели

report.setReport("/io/example/reports/productsext"); // Указываем на файл формирующего отчёт

report.setResourceBundle(«io/example/reports/productsext_messages»); // и на файл локализации



report.setSentence(«SELECT»+

" PRODUCTS.NAME AS PRODUCT_NAME" +

", PRODUCTS.REFERENCE AS PRODUCT_REFERENCE" +

", PRODUCTS.PRICESELL AS PRODUCT_PRICESELL" +

", PRODUCTS.CATEGORY AS CATEGORY_ID" +

", CATEGORIES.NAME AS CATEGORY_NAME" +

", PRODUCTS.TAXCAT AS TAX_ID" +

" FROM PRODUCTS" +

" LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID" +

" LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID" +

" LEFT OUTER JOIN TAXES ON TAXCATEGORIES.ID = TAXES.CATEGORY" +

" WHERE ?(QBF_FILTER)" +

" ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");

report.addParameter(«PRODUCTS.NAME»);

report.addParameter(«PRODUCTS.PRICEBUY»);

report.addParameter(«PRODUCTS.PRICESELL»);

report.addParameter(«PRODUCTS.CATEGORY»);

report.addParameter(«PRODUCTS.CODE»);

report.addQBFFilter(new com.openbravo.pos.ticket.ProductFilter());



report.addField(«PRODUCT_NAME», com.openbravo.data.loader.Datas.STRING);

report.addField(«PRODUCT_REFERENCE», com.openbravo.data.loader.Datas.STRING);

report.addField(«PRODUCT_PRICESELL», com.openbravo.data.loader.Datas.DOUBLE);

report.addField(«CATEGORY_ID», com.openbravo.data.loader.Datas.STRING);

report.addField(«CATEGORY_NAME», com.openbravo.data.loader.Datas.STRING);

report.addField(«TAX_ID», com.openbravo.data.loader.Datas.STRING);



report;





Локализуем поля



Для этого нам необходимо вернутся в iReport и заменить поля подписей на текстовые, чтобы в выражение указать переменную вида $R{label.key} для локализации. Например для шапки отчёта задаём значение $R{label.title} в в текстовом поле jrxml-шаблона.



После чего добавляем для этого ключа значение в файл productsext_messages.properies.



label.title=List of Products
label.line.number=N
label.product.reference=Reference
label.product.name=Name
label.product.price=Price
label.product.vat=VAT
label.product.TaxPrice=Price+Tax
label.report.summary=Summary




В качества базового языка лучше использовать английский добавив затем к нему перевод на другом языке. Например для русского языка это будет productsext_messages_ru.properies файл.



label.title=Список товаров
label.line.number=№
label.product.reference=Артикул
label.product.name=Название
label.product.price=Цена
label.product.vat=НДС
label.product.TaxPrice=Цена+Налог
label.report.summary=Всего позиций




Пересчитываем налоги



В первой части ставку налога мы брали непосредственно из базы данных, но формируя отчёт из приложения, лучше вести расчёт ставки и суммы налога использую специально для этого предназначенный метод getTaxRate класса TaxesLogic. Для этого в шаблоне надо создать параметр TAXESLOGIC.





Тег параметров в XML-шаблоне







Который вызывается при расчёте цены и получает ставку налогу непосредственно на дату составления отчёта, что позволяет использовать возможности NORD POS для расчёта НДС в случае изменения её ставки после определённой даты.





Поле цены с налогом на дату отчёта











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



Добавляем логотип и QR-код



Также с помощью вызова методов внешних классов в отчёт можно добавить различные ресурсы родительского приложения. Например в базе данных NORD POS хранится изображение логотипа. Вставить его в отчёт с помощью SQL-запроса не получится, но можно воспользоваться методом getResourceAsImage класса DataLogicSystem, вызвав его запросом из выражения поля изображения.

com.openbravo.pos.forms.DataLogicSystem.getResourceAsImage("Window.SupportBy")


Поле изображения логотипа
















Или, например, в JasperReports среди поддерживаемых штрих-кодов нет QR-кода, а в NORD POS интегрирована библиотека ZXing, с помощью неё можно сгенерировать QR-кода для отчёта например с ссылкой на сайт.

com.nordpos.device.util.BarcodeImage.getQRCode("http://nordpos.mobi")


Поле QR-кода ссылки на сайт



















Настраиваем доступ



Теперь остался последний шаг, это открыть доступ к отчёту из NORD POS. С начала добавим кнопку нашего отчёт в интерфейс приложения. Открываем в Настройки -> Ресурсы, находим BeanShell-скрипт Menu.Root и добавляем в раздел MenuSalesManagement панель отчёта.

        submenu.addPanel("/com/openbravo/images/appointment.png", "Menu.ProductList", "/io/example/reports/productsext.bsh");




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






Всё, перезагружаем NORD POS, открываем панель отчёта и формируем его. На этом задача по созданию отчёта для NORD POS успешно завершена.







Кроме создания отчётов с помощью средств JasperReports в NORD POS можно формировать этикетки, заполнять таблицы, строить графики и диаграммы, но о заложенных для этого основах я постарался рассказать читателям Хабра в этой статье. А в дальнейшем, если это будет интересно, то я хочу продолжить рассказ о других возможностях NORD POS, которые появились благодаря использованию сторонних библиотек. Но прежде хотел бы сделать небольшой опрос среди тех читателей, кто обе части дочитал до конца.





Почему вас заинтересовал NORD POS и для чего вы бы хотели/могли его использовать?


























































Проголосовало 5 человек. Воздержалось 2 человека.




Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.





Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/248587/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
nemnogo

Новые функции древних вирусов

Среда, 22 Января 2015 г. 00:40 (ссылка)


Новые функции древних вирусов



Если мысль о живущих на вашем теле и внутри него миллиардах бактерий вызывает у вас нервную дрожь, то вас вряд ли успокоит информация о том, что в человеке вдобавок ко всему полно вирусов. Эти многократно опороченные и оклеветанные микробы на самом деле тесно переплелись в человеческой плоти, ведь наш генетический материал на 8% состоит из абсорбированных форм ретровирусов. Это такое вирусное семейство, к которому принадлежит патогенный вирус иммунодефицита человека ВИЧ, вызывающий СПИД.

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<reports - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda