Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Для получения данных, по которым будет строиться отчет, необходимо создать SQLзапрос.

Далее рассмотрим создание запроса и заполнение формы отчета.  

панель

Описание инструмента

Оглавление

1. Создание запроса.

...

Информация
iconfalse

Описание действий по разработке отчетов

панель
titleОглавление

Оглавление

Свойства страницы
Статус

Статус
colourGreen
titleГОТОВО

Комментарий

Создание SQL-запроса

Нажимаем пиктограмму Image Added. Пиктограмма расположена на вкладке Design.

Получаем диалог для создания запроса (DatasetandQueryDialog)

Image Added










С помощью этого запроса выбираем поля type, subject, complect, id из таблицы f_dp_rkkbase

Нажимаем кнопку ReadFields. В нижней части окна увидим отобранные поля. С помощью кнопок Up и Down можно менять порядок полей.

Image AddedImage Added

Если на вкладке DataPreview, нажать на кнопку RefreshPreviewData, то можно увидеть документы, которые будут попадать в отчет по запросу

Image Added

Меняем порядок полей с помощь кнопок Up и Down

Image Added



Сортировка данных

Можно выбрать поля, по которым будет производиться сортировка информации в отчете. В данном примере показано, как выбрать сортировку по полю id. Для этого на вкладке Outlineвыбираем SortFields

Появляется диалог NewSortFieldWizard, где выбираем поле id и нажимаем кнопку Finish

Image Added












После того, как мы выбрали сортировку по полю id, предварительный просмотр будет выглядеть так:

Image Added

Конфигурирование отчета

Для данного примера удалим некоторые секции. Это можно сделать следующим образом:

Щелкаем мышкой по секции, которую необходимо удалить. Слева появляется выделение секции. При нажатии на правую клавишу, появляется меню. Нажимаем Delete. Удаляем все секции, которые нам не нужны для данного примера.

Image Added









Оставляем секции Title, Column Header и Detail1.

Для  вывода информации в отчет в данном примере используются два основных компонента: Text Field (динамическое поле) и Static Text (статический текст). Динамическое поле используется для вывода значений параметров или полей источника данных, а статическое - для вывода постоянного текста.

Используем Static Text для формирования заголовка отчета. Для этого на вкладке Palette выбираем Static Text и мышкой перетаскиваем в секцию отчета Title 

Image Added







Двойным щелчком мышки открываем поле и вписываем текст «Заголовок простого отчета»

Image Added






Далее открываем вкладку Properties для данного текста.  Выбираем Appearance и устанавливаем координаты области размещения текста в секции Title.

Image Added

В секции Location\Position Type указываем координаты x и y области, где будет размещаться текстпо отношению к верхней границе секции Title (Fix Relative To Top).

В секции Size определяем размер области размещения: W - ширина области, h - высота области. Единица измерения - пиксель (px). Размер области — фиксированный: StretchType -NoStretch.

Для форматирования текста открываем секцию labelStaticText

Image Added









Выбираем шрифт текста, выравнивание и т.д.

Далее необходимо заполнить секции  Column Header и Detail1. Это можно сделать разными способами. Сначала разместим поле id на форме отчета в секции Detail1 следующим образом:

  • на вкладке Palette выделяем TextField и перетаскиваем мышкой в нужное место секции Detail1
  • помещаем поле id на место TextField

Image Added





Двойным щелчком мышки открываем  Text Field. В открывшемся диалоге  в Expression Editor вместо текста помещаем (двойным щелчком мыши) поле id - $F{id}.$F – обозначает поле.

Image Added












Также, как и для статического текста определяем область размещения поля на форме отчета

Image Added









Затем выбираем Text Field (для статического текста выбирали Static Text) и форматируем текст

Image Added












При таком способе заполнения формы заголовок столбца необходимо заполнять дополнительно. Это можно сделать  путем создания статического текста в секции Column Header.

Рассмотрим ещё один способ заполнения формы. Создадим столбец с заголовком «БД» и содержащим в секции Detail1 поле «complect». Для этого на вкладке «Outline» выбираем в секции Fields поле  complect и перетаскиваем его в секцию Detail1

Image Added











Далее форматируем заголовок столбца и его содержимое

Image Added


Image Added










Заполняем таким же образом столбцы  «Тип документа» и «Заголовок»

Image Added



   



Выбираем вкладку Preview и смотрим сформированный отчет 

Image Added









Чтобы создать границы строк и столбцов, необходимо создать границы ячеек. Для этого выделяем нужную ячейку и в свойствах ячейки (Properties)  выбираем «  Borders» и настраиваем границы (Рис. 2.4.

...

3.2.

...

Image Removed

Рис. 2.4.1.1. Окно для создания запроса.

...

15).

Image Added













Настраиваем границы для всех ячеек

Image Added






На вкладке Preview смотрим результат

Image Added










На вкладке Source можно увидеть код XML отчета.

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

Блок кода
languagexml
collapsetrue
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.4.final using JasperReports Library version 6.0.4  -->
<!-- 2015-08-09T07:26:52 -->
<jasperReportxmlns="http://jasperreports.sourceforge.net/jasperreports"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"name="Example1"pageWidth="595"pageHeight="842"columnWidth="555"leftMargin="20"rightMargin="20"topMargin="20"bottomMargin="20"uuid="4c68dd92-6073-4492-a024-c0af5108344f">
	<propertyname="com.jaspersoft.studio.data.defaultdataadapter"value=" Cm Sochi JDBC on localhost"/>
	<queryStringlanguage="SQL">
		<![CDATA[Select 
type, subject, complect, id
from 
f_dp_rkkbase]]>
	</queryString>
	<fieldname="id"class="java.lang.Long"/>
	<fieldname="type"class="java.lang.String"/>
	<fieldname="subject"class="java.lang.String"/>
	<fieldname="complect"class="java.lang.String"/>
	<sortFieldname="id"/>
	<background>
		<bandsplitType="Stretch"/>
	</background>
	<title>
		<bandheight="49"splitType="Stretch">
			<textField>
				<reportElementx="117"y="5"width="300"height="40"uuid="db72abba-b8f3-4702-88fa-9353e41e723d">
					<propertyname="local_mesure_unitheight"value="pixel"/>
					<propertyname="com.jaspersoft.studio.unit.height"value="px"/>
					<propertyname="local_mesure_unitwidth"value="pixel"/>
					<propertyname="com.jaspersoft.studio.unit.width"value="px"/>
				</reportElement>
				<textElementtextAlignment="Center"verticalAlignment="Middle">
					<fontfontName="Times New Roman"size="14"isBold="true"/>
				</textElement>
				<textFieldExpression><![CDATA["Заголовок простого отчета"]]></textFieldExpression>
			</textField>
		</band>
	</title>
	<columnHeader>
		<bandheight="42"splitType="Stretch">
			<staticText>
				<reportElementx="60"y="0"width="110"height="40"uuid="fd40d18b-aaac-4c07-a301-67494fe4bab3"/>
				<boxpadding="3"topPadding="1"leftPadding="1"bottomPadding="1"rightPadding="1">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementtextAlignment="Center"verticalAlignment="Middle"/>
				<text><![CDATA[БД]]></text>
			</staticText>
			<staticText>
				<reportElementx="170"y="0"width="146"height="40"uuid="21ca3a0d-6c34-41f6-b353-c9dba5b315cc"/>
				<boxpadding="3">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementtextAlignment="Center"verticalAlignment="Middle">
					<fontfontName="Times New Roman"size="12"/>
				</textElement>
				<text><![CDATA[Тип документа]]></text>
			</staticText>
			<staticText>
				<reportElementx="316"y="0"width="234"height="40"uuid="d562e6a7-bac9-4a1f-b6dc-4b6aeacaef5b"/>
				<box>
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementtextAlignment="Center"verticalAlignment="Middle">
					<fontfontName="Times New Roman"size="12"/>
				</textElement>
				<text><![CDATA[Заголовок]]></text>
			</staticText>
			<staticText>
				<reportElementx="20"y="0"width="40"height="40"uuid="13d2281f-e5d5-4291-9833-bb1971ddbd67"/>
				<boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementtextAlignment="Center"verticalAlignment="Middle">
					<fontsize="12"/>
				</textElement>
				<text><![CDATA[id]]></text>
			</staticText>
		</band>
	</columnHeader>
	<detail>
		<bandheight="40"splitType="Stretch">
			<textField>
				<reportElementx="20"y="0"width="40"height="40"uuid="6f2a3a63-d240-4844-8d67-7a553a5da3ac">
					<propertyname="local_mesure_unitheight"value="pixel"/>
					<propertyname="com.jaspersoft.studio.unit.height"value="px"/>
					<propertyname="local_mesure_unitwidth"value="pixel"/>
					<propertyname="com.jaspersoft.studio.unit.width"value="px"/>
				</reportElement>
				<boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementtextAlignment="Center"verticalAlignment="Middle">
					<fontfontName="Traditional Arabic"size="12"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElementx="60"y="0"width="110"height="40"uuid="caff384d-e033-4e38-be01-969d93dacad7"/>
				<boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementtextAlignment="Left"verticalAlignment="Middle">
					<fontfontName="Times New Roman"size="12"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{complect}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElementx="170"y="0"width="146"height="40"uuid="b4a80027-8dfd-4987-890d-c616644894eb"/>
				<boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementverticalAlignment="Middle">
					<fontfontName="Times New Roman"size="12"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{type}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElementx="316"y="0"width="234"height="40"uuid="438487e5-c811-46fc-add4-1d43fd0d96b1"/>
				<boxtopPadding="3"leftPadding="3"bottomPadding="3"rightPadding="3">
					<topPenlineWidth="0.6"/>
					<leftPenlineWidth="0.6"/>
					<bottomPenlineWidth="0.6"/>
					<rightPenlineWidth="0.6"/>
				</box>
				<textElementverticalAlignment="Middle">
					<fontfontName="Times New Roman"size="12"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{subject}]]></textFieldExpression>
			</textField>
		</band>
	</detail>
</jasperReport>

Группировка данных

Создаем отчет Example2 с источником данных Cm Sochi JDBC on localhost, тем же, что и в примере Example1.  Информацию теперь будем получать из двух таблиц: f_dp_rkkbase и  f_dp_rkk (Рис. 2.2.4.1.). Запрос будет выглядеть следующим образом:

Блок кода
languagesql
Select

...


...

rkkbase.type, rkkbase.subject, rkkbase.complect, rkkbase.id,
rkk.regnumprist || rkk.regnumcnt || rkk.regnumfin as regNumber
from
f_dp_rkkbase rkkbase
join  

...

f_dp_rkk rkk on rkkbase.id=rkk.

...

id  

Из таблицы  f_dp_rkkbase  выбираем  поля type, subject, complect, id.   Из таблицы  f_dp_rkk  выбираем  поля regnumprist, regnumcnt, regnumfin,

...

если значение поля id в таблице f_dp_rkk  совпадает со значением  поля  id  в  таблице f_dp_rkkbase.

...

Нажимаем кнопку ReadFields. В нижней части окна увидим отобранные поля. С помощью кнопок Up и Down можно менять порядок полей.

Таблица  f_dp_rkkbase содержит следующие поля:

...

Image Removed

Рис.  2.4.1.2. Запрос и  поля, отобранные с помощью запроса.

Image Removed

Рис.  2.4.1.3. Поля, отобранные с помощью запроса.

Если на вкладке DataPreview  (рис2.4.1.3) , нажать на кнопку RefreshPreviewData, то можно увидеть документы, которые будут попадать в отчет по запросу. (Рис.  2.4.1.4)

Image Removed

 Рис 2.4.1.4. Документы, отобранные с помощью запроса.

Меняем порядок полей с помощь кнопок  UP и  DOWN

Image Removed

Рис.  2.4.1.5.  Изменённый порядок полей.

2.4.2. Сортировка данных.

Можно выбрать поля, по которым будет производиться сортировка информации в отчете. В данном примере показано, как выбрать сортировку по полю id. Для этого на вкладке Outlineвыбираем SortFields. (рис. 2.4.2.1)

Появляется диалог NewSortFieldWizard, где выбираем поле idи нажимаем кнопку Finish(рис. 3_2).

Image Removed

Рис. 2.4.2.1. Определение полей для сортировки.

После того, как мы выбрали сортировку по полю id, предварительный просмотр будет выглядеть так, как показано на рис. 2.4.2.2.

Image Removed

...

Объединяем эти поля и получаем поле regNumber (rkk.regnumprist || rkk.regnumcnt || rkk.regnumfin as regNumber). Группировать информацию в отчете будем  по полю complect, которое содержит алиас приложения.

Image Added











Изменяем порядок полей. Поле complectдолжно быть первым в списке.

Image Added











Выбираем вкладку Datapreview и обновляем информацию - RefreshPreviewData

Image Added











Указываем, по каким полям будет производиться сортировка. Для этого выбираем вкладку Sorting и нажимаем кнопку Add. Появляется диалог   NewSortFieldWizard

Image Added











Выбираем  поле complect и нажимаем кнопку Finish. Таким же образом добавим в сортируемые поля regnumber

Image Added











Форматируем  шаблон

Image Added


Создание группы

На вкладке Outline выбираем название отчета. По правой кнопке мышки получаем меню и выбираем пункт Create Group


Image Added















Открывается диалог  GroupBand.  Присваиваем группе название - DB и выбираем поле, по которому производим группировку - complect.  Нажимаем кнопку Next.

Image Added










В следующем диалоге указываем, что добавляем на форму секцию GroupHeader (Заголовок группировки)

Image Added











Нажимаем кнопку Finish.  На форме появляется секция DB Group Header1

Image Added









Указываем, что в этой секции будет отображаться информация из поля complect-$F{complect} 

Image Added








Далее форматируем секцию с заголовком группы

Image Added









Указываем границы

Image Added












Выбираем цвет фона для секции.  На вкладке Properties выбираем Appearance.  Далее в секции Color  выбираем  поле BackColor и в открывшемся диалоге выбираем нужный цвет.

Image Added











Image Added









И в результате секция отображается. Обратите внимание на поле Transparent. Оно не заполнено.

Image Added

Добавления номера страницы

Добавим в отчет настройки, которые позволят при печати выводить номер страницы. Для этого вернем в отчет удаленную ранее секцию  Page Footer.  На вкладке Outline выбираем  Page Footerи нажимаем Add Band

Image Added








На форме появится секция Page Footer. Добавим в эту секцию текстовое поле/

Image Added








Форматируем текстовое поле. Дважды щелкаем по выделенному полю и в открывшемся диалоге заполняем поле Expression: $V{PAGE_NUMBER}

В этом выражении  $V(PAGE_NUMBER) – встроенная переменная, которая выводит номер страницы в отчет.

Image Added












Нажимаем кнопку Finish. Форма будет выглядеть:

Image Added








В отчет будет выводиться номер страницы

Image Added


Использование выражений

Использование выражений рассмотрим на примере отчета Example3. Создадим отчет и в Dataset and Query Dialog создадим запрос

Image Added







Информацию, как и в отчете Example2,  будем получать из двух таблиц: f_dp_rkkbase и  f_dp_rkk. Запрос будет выглядеть следующим образом:

Блок кода
languagesql
Select
rkkbase.type, rkkbase.subject, rkkbase.complect, rkkbase.id, 
rkk.regnumprist || rkk.regnumcnt || rkk.regnumfin as regNumber,
rkk.regdate
from
f_dp_rkkbase rkkbase
join  f_dp_rkk rkk on rkkbase.id=rkk.id
where
rkkbase.complect in ('InputDocs','InternalDocs') 

Из таблицы  f_dp_rkkbase  выбираем  поля type, subject, complect, id, regdate.   Из таблицы  f_dp_rkk  выбираем  поля regnumprist, regnumcnt, regnumfin, если значение поля id в таблице f_dp_rkk  совпадает со значением  поля  id  в   таблице f_dp_rkkbase.

Объединяем эти поля и получаем поле regNumber (rkk.regnumprist || rkk.regnumcnt || rkk.regnumfin as regNumber).

В отчет отбираем только входящие и внутренние документы (where  rkkbase.complect in ('InputDocs','InternalDocs') ).\

Заполняем форму отчета

Image Added








На вкладке Preview смотрим результат

Image Added










Формируем колонку № п/п. Для того, чтобы в этой колонке печатались номера строк по порядку, делаем следующее. В секции Detail1 создаем текстовое поле. Дважды щелкаем по этому полю мышкой и получаем диалог Expression Editor – редактор выражений.

Image Added












Для получения порядкового номера выбираем встроенную переменную $V(COLUMN_COUNT). $V – означает — переменная.

В колонке  «Номер», если документ  не зарегистрирован, будем печатать «Проект». Для этого   поле, где помещается Regnumber редактируем.

Image Added















Здесь выражение ($F{regnumber} !=null ? $F{regnumber} : "Проект") означает следующее- если regnumber не равно null, то печатается регистрационный номер документа, иначе печатается «Проект».

Форматируем дату таким образом, чтобы получить формат «дд.мм.гггг». В данном случае время нам выводить не нужно.

Image Added













Заголовок группировки редактируем так, чтобы вместо «InputDocs »  печаталось «Входящие документы», а вместо «Internaldocs» - «Внутренние документы» (Рис. 2.4.7.7).

Image Added












Форма будет выглядеть

Image Added







Отчет теперь будет выглядеть

Image Added


Использование параметров

Добавим следующие параметры в отчет Example3:

  • RepTitle – c помощью этого параметра пользователь может менять заголовок отчета
  • Date.Start – начало периода регистрации документов, за который нужно выводить информацию в отчет
  • Date.End – конец  периода регистрации документов, за который нужно выводить информацию в отчет.

Создаем параметр RepTitle. Для этого на вкладке Outline выделяем Parameters и нажатием правой кнопки мыши получаем меню:

Image Added








Выбираем Create Parameter. И создаётся параметр Parameter1

Image Added















Щёлкаем правой кнопкой мыши и получаем меню.

Image Added







В меню выбираем ShowPropertiesи получаем диалог:

Image Added










В поле Name – название параметра меняем “Parameter1” на “RepTitle”. В поле Classуказываем java.lang.String – в параметре будет тип данных — строка.

DefaultValueExpression – значение параметра по умолчанию. Это значение можно будет поменять при запуске отчета на выполнение - Is For Prompting.

Редактируем на форме заголовок отчета. Выбираем параметр RepTitle.

Image Added













Форма будет выглядеть

Image Added







Создаем параметр Date.Start. Как и в предыдущем случае создаем параметр и редактируем его

Image Added










Заполняем поля Name – название параметра Date.Start и поле Class – тип данных java.util.Date – Дата.

Подобным образом создаем параметр Date.End, но для этого параметра присваиваем значение по умолчанию — текущая дата.

Image Added










Для того, чтобы присвоить значение по умолчанию, нажимаем на пиктограмму.  В открывшемся диалоге выбираем значение — встроенную функцию TODAY( ) - текущую дату

Image Added











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

Image Added






Добавляем в запрос - and (regDate between $P{Date.Start}and $P{Date.End}). Здесь $P – обозначает — параметр.  Чтобы в отчет не попадали проекты документов добавим в запрос:

and  rkk.regnumcnt is not null.

Открываем вкладку Preview . Предлагается ввести параметры отчета 

Image Added













Значение по умолчанию для заголовка отчета изменяем на  «Список корреспонденции».

Дата окончания интервала  заполняется по умолчанию. Оставляем её без изменения. Для выбора даты начала интервала нажимаем на пиктограмму  , выбираем нужную дату и нажимаем пиктограмму.

Image Added













Для продолжения выполнения отчета нажимаем пиктограмму Image Added 

Image Added












Результат выполнения отчета

Image Added


Использование подотчетов

Использование подотчетов рассмотрим на примере отчета Example4. Отчет создаем  в папке  Example4.

Создание основного отчета

Создадим сначала форму отчета

Image Added







Этот отчет строится также, как и в примере Example3. Отличие состоит только в том, что в него отбираются только входящие документы -   where  rkkbase.complect in ('InputDocs').

Image Added







Все элементы на форме отчета и параметры сформированы также, как и в отчете Example3.

Если построить этот отчет, то увидим результат

Image Added


           








В основной отчет необходимо добавить  колонку, в которой будут отображаться адресаты документа. Причем адресатов может быть как один, так и несколько. Для этого в основной  отчет добавим колонку «Адресаты» и встроим в нее подотчет (subreport).

Создание подотчета (subreport)

В папке  Example4 создаем отчет Example4-sub  (Рис. ...).  В отчет добавляем поле adresseeи параметр Rkkid. Запрос для отбора документов в отчет

Image Added









Image Added










В этом запросе вычисляются фамилии сотрудников — адресатов документа. Так как адресатов может быть несколько, используется функция используется функция STRING_AGG для объединения строк.

Форматируем текстовое поле adressee

Image Added

На закладке  Appearance показываем размещение поля.

Image Added















На закладке Borders форматируем границы поля в отчете. В   данном случае границы отсутствуют. 

В подотчет добавляем параметр Rkkid.

Image Added

Добавление подотчета в основной отчет

Сначала изменяем форму основного отчета для того, чтобы вставить колонку «Адресаты»

Image Added







Добавляем статический текст в заголовок столбца и форматируем

Image Added










Далее в строке, где будут показаны адресаты, размещаем Frame. Для этого на закладке  Paletteвыделяем элемент  Frameи перетаскиваем мышкой в нужное место

Image Added





Далее форматируем размещение фрейма на форме отчета и его границы

Image Added











Image Added












Затем  выделяем мышкой элемент  Subreportна вкладке Palette(Рис. 2.4.9.14) и перетаскиваем  его в поле фрейма.

Image Added


 






Появляется первое окно для настройки параметров подотчета. Предлагается выбрать существующий подотчет или разработать новый

Image Added

















Выбираем ранее разработанный подотчет , для этого нажимаем кнопку  Select report file. Появляется окно для выбора файла (Рис. 2.4.9.16). 

Image Added







Выбираем  Example4-sub.jasperиз папки Example/Example4

Image Added














Далее нажимаем кнопку Nextи выбираем источник данных тот же, что и в основном отчете

Image Added













Далее нажимаем кнопку Next и настраиваем параметры отчета

Image Added













Нажимаем кнопку Add и получаем следующее окно для настройки параметров

Image Added










Указываем параметр подотчета Rkkid. Нажимаем на кнопку редактироватьи получаем окно редактора выражений

Image Added












В окне редактора выражений выбираем поле  idосновного отчета. Фактически в редакторе выражений мы связываем параметр подотчета — Rkkidи поле $F(id)в основном отчете.

Image Added










Нажимаем кнопку ОК и получаем  окно с настроенными параметрами

Image Added


Нажимаем кнопку Finish.

Примерное изображение формы отчета после нажатия кнопки Finish.

Image Added







Далее отформатируем размещение подотчета на форме основного отчета

Image Added









Результат построения отчета с подотчетом

Image Added


Использование скриптлетов (Scriptlet)

В приведенном примере используется UtilScriptlet для формирования списка, состоящего из названий "Тип документа". Разработку отчета начнем с создания скриптлета UtilScriptlet.

Image Added

















Скриптлет формирует список значений:

  • Письмо
  • Извещение
  • Служебная записка
  • Приказ
  • Докладная записка

Разработаем форму отчета, SQL-запрос.

Image Added










Image Added










В свойствах отчета - вкладка Properties /Dataset заполняем поле Scriplet Class - UtilScriptlet. Сохраняем отчет.

В свойствах системного параметра  REPORT_SCRIPTLET в поле Class появляетсязначение UtilScriptlet
Image Added

Создаем параметры DOC_Type. Name и Doctypes
Image Added

Doctypes
Image Added

В SQL-запрос добавляем

and rkkbase.type  in($P!{DocTypes}).

В запросе ($P!{DocTypes}) означает, что передаётся напрямую список отобранных при выполнении отчета значений.