SugarTalk - ресурс для администраторов и разработчиков системы SugarCRM.

Работа с отчетами ZuckerReports. Группы и подотчеты

В прошлой статье мы рассмотрели Ireport (графический редактор для ZuckerReports в SugarCRM) издали, а сегодня подробней остановимся на составляющих отчета: параметры, поля, выражения и способах их размещения на теле отчета: группы, подотчеты (subreports) и разберем простенький пример step-by-step.
Параметры отчета – это переменные, при помощи которых можно вывести на тело отчета текст, ввести в отчет переменную (например, для уточнения MySQL  запроса) ну и все что вообще могут делать переменные. Они всегда присутствуют в отчете предустановленные (их нельзя изменить или удалить, например REPORT_DATA_SOURCE) так же они могут добавляться пользователем. Выглядят так $P{parameter_name}.


Поля отчета – их в отчете нет, пока вы не сделаете запрос к БД и это ни что иное как результат MySQL запроса. Выглядят так $F{feald_name}.
Выражения отчета -  это управляющие конструкции, при помощи которых мы управляем выводом в отчете,  запросами к БД,  делаем вычисления. Они так же есть в отчете по умолчанию, такие как: PAGE_COUNT, COLUMN_NUMBER и подобные, из их названия понятна их роль в отчете, если мы поместим, допустим, PAGE_COUNT в правый нижний угол отчета, то запустив его, увидим на последней странице в том же месте количество страниц в нашем отчете. Выражения добавляются пользователем и при создании некоторых элементов отчета. К примеру, когда мы создаем группу в отчете – то создается выражение (название_группы) _COUNT, которое, при размещении его в отчете, покажет нам количество различных элементов в группе. Выглядят выражения в отчете так $V{variable_name}.
Группа (group)– добавляются пользователем (у меня View -> Report groups) позволяют лучше структурировать отчет.
Подотчет (subreport) – это просто отчет в отчете.
Создадим отчет, показывающий все контакты, сгруппированные по половому признаку, относящиеся к конкретному контрагенту.  Я администратор ZuckerReports в SugarCRM, поэтому пример из БД Sugar. Назовем отчет Sub_contacts.
Начнем с подотчета. Выбираем нужные поля из БД по контактам упорядоченные по полю, которому собираемся группировать,

1
2
select * from contacts
order by pol

и размещаем в зоне detail. Создаем группу отчета – называем ее «pol», в Group Expression вписываем поле, по которому группируем $F{pol}. У нас появились две новых зоны в отчете pol_Header и pol_Footer, помещаем в нужную нам зону поле, указывающее на принадлежность к прекрасной или сильной половине человечества контакта (группироваться будет одинаково, где его не расположи) и запускаем.

null values in ZuckerReports

У меня должны выводиться: имя контакта и его адрес обитания, и если данные в БД о контакте не полные, то в отчете мы увидим на их местах null. Что бы это предотвратить добавим условие в поля, которые могут быть пустыми (правой кнопкой на поле -> Edit Expression).

Вот что мы видим:

$F{primary_address_street}

Исправим на:

( ($F{primary_address_street} != null) ? $F{primary_address_street} : "")

т. е. если поле имеет значение отличное от “null”, то выводим его, если нет, то выводим пустую строку (естественно можно указать все что угодно вместо пустой строки: «НЕТ ДАННЫХ» или «АЙ-ЯЙ-ЯЙ ЧТО ТВОРИТСЯ ТО??, ДЕЛАТЬ ТО ЧТО ТЕПЕРЬ??!!» или вывести это поле красным цветом).

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

Вернемся к нашим панамам. Нам нужна переменная, с помощью которой мы будем получать значение (id) контрагента и для него выводить соответствующие данные по контактам. Создадим параметр  $P{acc_id} и ставим галочку «use as a prompt».

Подправим немного запрос к БД:

1
2
3
select * from contacts
where account_id` = $P{acc_id}
order by pol

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

Создадим новый отчет Master, в который будем добавлять наш Sub_contacts.

Напишем запрос к БД:

1
2
SELECT *
FROM accounts

Добавляем отчет содержащий информацию о контактах. Выбираем на панели инструментов subreport и помещаем под расположенными уже полями из таблицы контрагентов. Включится мастер-помощник добавления подотчетов. В первом диалоговом окне выбираем “Use an existing report” (использовать существующий отчет) и выбираем наш Sub_contacts. В следующем окне указываем тип соединения с источником данных “Use the same connection used to fill the master report” (использовать тот же тип соединения, что и отчет, в который вставляем подотчет). Затем  выбираются параметры из добавляемого отчета (тут мы увидим наш acc_id). Последний шаг —  выбираем путь к подотчету (нижний это абсолютный путь, верхний вариант динамический содержащий в себе параметр  $P{SUBREPORT_DIR}, в котором и содержится путь).

В результате получаем:
изображение подотчета в мастеротчете Ireport

В свойствах подотчета переходим на вкладку Subreport (other), где в нижнем окошке добавляем параметр (если его там не будет)  acc_id и в “default value expression” ставим поле, по которому будут выводиться данные о контактах — $F{id}.

Компилируем оба отчета и выводим результат:
мастер отчет в IReport

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

И, кстати, в разделе DOWNLOAD появились модуль ZuckerReports 1.12 для SugarCRM на русском языкеpack_russian_ZR, и модуль русификации для уже установленного ZuckerReports 1.12  - ZuckerReportsCE_ru

В следующей статье разберем чарты и графики. Оставайтесь с нами.

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

Последнее изменениеПонедельник, 10 июля 2017 18:06
  • Оцените материал
    (0 голосов)
  • Опубликовано в SugarCRM
  • Прочитано 35550 раз
Другие материалы в этой категории: « Редактирование global links Модуль «Метро» »

12485 комментарии

  • Cheap Stitched Jerseys

    Cheap Stitched Jerseys

    Комментировать 02.09.2017 09:23

    Either the Titans, who entered the 2008 playoffs as the AFC's top seed, didn't come into the season right or they are mentally in the toilet after inexplicably getting worse by the moment.
    Cheap Stitched Jerseys

  • Clare Walters

    Clare Walters

    Комментировать 02.09.2017 09:23

    The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought youd have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention.

  • EvdgrynGluck

    EvdgrynGluck

    Комментировать 02.09.2017 09:10

    best auto insurance
    [url=http://gettodayinsurance.org/]car insurance quotes[/url]
    cheap insurance for cars
    cheap auto insurance online

  • kyrie irving shoes

    kyrie irving shoes

    Комментировать 02.09.2017 08:17

    American college students basketball shoes for players to sell
    kyrie irving shoes

  • kyrie irving shoes

    kyrie irving shoes

    Комментировать 02.09.2017 08:17

    I just hope to inform you that I am new to writing and genuinely enjoyed your webpage. Quite possibly I am prone to store your blog post . You seriously have stunning article material. Get Pleasure From it for telling with us your favorite domain page
    kyrie irving shoes

  • Glass Reinforced Concrete in the UK

    Glass Reinforced Concrete in the UK

    Комментировать 02.09.2017 08:16

    It is the best time to make some plans for the future and it is time to be happy. I've read this post and if I could I want to suggest you some interesting things or suggestions. Perhaps you could write next articles referring to this article. I want to read more things about it!

  • kyire 3

    kyire 3

    Комментировать 02.09.2017 08:16

    I was extremely pleased to discover this great site. I want to to thank you for ones time due to this wonderful read!! I definitely really liked every part of it and i also have you saved to fav to look at new things in your web site.
    kyire 3

  • Wholesale Jerseys Free Shipping

    Wholesale Jerseys Free Shipping

    Комментировать 02.09.2017 07:19

    This funding shift has also largely enhanced the commercialization of Dutch Art especially during the events publicized on the Dutch Arts Calendar.This may be accomplished properly with the community banking institution.Inevitably, the Dutch Arts Calendar of Events in the United States is filled with a buzz of activities throughout the year. xbox360repairs."The end of the year is my deadline," Manfred said.
    Wholesale Jerseys Free Shipping

  • Cheap NFL Jerseys China Free Shipping

    Cheap NFL Jerseys China Free Shipping

    Комментировать 02.09.2017 07:18

    xbox360repairs. . Some digital cameras have low megapixels. Having the ability to switch off the phone occasionally that your online business is closed is important.This may be accomplished properly with the community banking institution.
    Cheap NFL Jerseys China Free Shipping

  • Single kajak

    Single kajak

    Комментировать 02.09.2017 07:18

    Работа с отчетами ZuckerReports. Группы и подотчеты

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Наверх

Последние новости

  • 1
  • 2
  • 3
  • 4

Популярные новости