メニュー最初の一歩基本的な仕組み機能サンプル
プログラム仕様デザイン仕様機能拡張その他関連製品開発・運営会社 |
帳票定義ファイルの仕様RapidReportでは、帳票定義はJSON形式のファイルで保存され、 実行時にはそれをデコードしたオブジェクトが生成されて利用されます。 この帳票定義オブジェクトは以下のオブジェクトからなるツリーであり、 それぞれが固有のプロパティを持っています。 レポートはツリーのトップレベルに必ず位置するオブジェクトです。 その他のオブジェクトは全てレポートの子孫として存在することになります。 レポートオブジェクトのプロパティには、用紙設定などの帳票全体にかかわる項目が定義されます。 レポートオブジェクトの下にはグループというオブジェクトが必ず存在します。 帳票に渡されたデータは、グループのプロパティに設定された条件に従って分割されます。 また、グループは後述するコンテントをどのように配置するかを指定するプロパティを持ちます。 グループオブジェクトの下には、コンテントというオブジェクトが必ず1つ以上存在します。 コンテントは帳票の具体的な表示内容を定義するオブジェクトです。 データを表示するためのフィールドや、罫線といった要素(Element)は、コンテントに属します。 要素の詳細については、「要素の仕様」を参照してください。 また、コンテントのプロパティには、 帳票上で割り当てられる領域のサイズや、コンテントをいつ表示するかを制御する条件などの項目があります。 コンテントは、必要に応じて1つの子グループを持つことができます。 子グループには、コンテントの親グループに割り当てられたデータが渡されて再び分割が行われます。 グループの下にはコンテントが存在するので、 この構造をいくつも繰り返すことで多階層グループを表現することができます。 それぞれのオブジェクトの詳細について説明します。 特に断りがない場合、全てのプロパティは省略可能です。 Report(レポート)先ほども述べたとおり、レポートはツリーのトップレベルに必ず位置するオブジェクトです。 レポートは、以下のプロパティを持ちます。 caption(見出し)[caption]は文字列型のプロパティで、レポートデザイナにおいて構成ツリーのノード見出しとして利用されます。 id(識別子)[id]は文字列型のプロパティで、レポートの識別子を指定します。 レポートとグループの識別子はユニークである必要があります。 識別子は、帳票出力の実行時にプログラムから参照して利用することができます。 [caption(見出し)]が設定されていない場合は、識別子がレポートデザイナにおいて構成ツリーのノード見出しとして表示されます。 comment(コメント)[comment]は文字列型のプロパティで、レポートのコメントを指定します。 コメントの内容は帳票の出力処理にはまったく影響しません。 デザイン作業のための覚え書きとして利用できます。 コメントの付けられたレポートには、レポートデザイナの構成ツリー上で赤いマークが表示されます。 また、レポートが選択されるとコメント内容がヘルプ欄に表示されます。 paper(用紙設定)[paper]には帳票の用紙についての設定を行うためのオブジェクトを指定します。 このオブジェクトは以下のプロパティを持ちます。
font(フォント)[font]には、この帳票全体におけるデフォルトのフォントを定義するためのオブジェクトを指定します。 文字を表示する要素 (フィールド, テキスト) で各個の[font]設定を省略すると、ここで指定したフォントが利用されます。 このオブジェクトは以下のプロパティを持ちます。
line_width(線太さ)[line_width]は数値型のプロパティで、帳票全体におけるデフォルトの線の太さを指定します。 線を描画する要素 (直線, 四角形, 円) で各個の[line_width]を省略すると、 ここで指定した線の太さが利用されます。 省略すると、デフォルトの線太さは1となります。 char_spacing(文字間隔)[char_spacing]は数値型のプロパティで、帳票全体におけるデフォルトの文字間隔を指定します。 文字を表示する要素で各個の[char_spacing]を省略すると、ここで指定した文字間隔が採用されます。 このプロパティの値に文字幅を掛けた間隔を空けて文字列が表示されるようになります。例えば 0.1 と指定すると、各文字の間に 0.1 文字分の間隔が空きます。 省略すると、デフォルトの文字間隔は 0 となります。 ※ 等幅ではないフォントを利用している場合と、Excel(XLS/XLSX)形式では、このプロパティは無効です。 page_capacity(許容ウェイト)[page_capacity]は数値型のプロパティで、1ページ内に含めることのできるコンテントのウエイト許容量を指定します。 例えば[page_capacity]の値を20とし、明細コンテントの[weight(ウェイト)]を1としておけば、 明細が20行表示される度に改ページするといったことができます。 このプロパティを省略した場合、ウエイトによる改ページは行われなくなります。 reset_page_count(ページ数リセット)[reset_page_count]はブール型のプロパティです。 Trueを指定すると、レポートが開始するたびにページ数がリセットされるようになります。 (ページ数はデザイン内の式でpage_countメソッドから得ることができます) このプロパティが意味を持つのは、複数の帳票を続けて出力する場合です。 例えば、以下のようにreportAの後にreportBを続けて出力するとします。
// C#
pages = reportA.GetPages();
pages.AddRange(reportB.GetPages());
' VisualBasic
pages = reportA.GetPages()
pages.AddRange(reportB.GetPages())
// Java
pages = reportA.getPages();
pages.addAll(reportB.getPages());
このとき、reportBで[reset_page_count]にTrueが指定されていたならば、 そこでページ数が1にリセットされます。 custom_fields(カスタム列)[custom_field]には、動的に計算されるカスタム列を定義したオブジェクトのリストを設定します。 リストの要素となるオブジェクトは以下のプロパティを持ちます。
カスタム列は、通常のデータ列と区別することなく利用することができます。 printer_name(プリンタ名)[printer_name]は文字列型のプロパティで、デフォルトのプリンタ名を指定します。 このプロパティは、.NET版の直接印刷またはプレビュー機能を利用しているときにのみ意味を持ちます。 paper_name(用紙名)[paper_name]は文字列型のプロパティで、デフォルトの用紙名を指定します。 このプロパティは、.NET版の直接印刷またはプレビュー機能を利用しているときにのみ意味を持ちます。 paper_source(用紙トレイ)[paper_source]は文字列型のプロパティで、デフォルトの用紙トレイを指定します。 このプロパティは、.NET版の直接印刷またはプレビュー機能を利用しているときにのみ意味を持ちます。 group(グループ)グループオブジェクトを指定します。 このプロパティは省略できません。 monospaced_fonts(等幅フォント情報)※このプロパティはレポートデザイナによって自動的に設定されます。開発者は通常、このプロパティを編集する必要はありません。
[monospaced_fonts]はリスト型のプロパティで、この帳票をデザインした際に設定されていたフォントが等幅フォントであった場合、
その情報を格納しておくためのプロパティです。 直接印刷/プレビューレンダラとPDFレンダラは、このプロパティに設定された情報を基にして文字列の割付を行います。 これにより、レンダラの種類によって出力内容(文字間隔、指定された領域に描画可能な文字数など)の差異が生じなくなります。 [monospaced_fonts]は、次のプロパティを持ったオブジェクトを持ちます。
Group(グループ)グループはレポートまたはコンテントに含まれるオブジェクトです。 冒頭で述べたとおり、グループの主な役割は渡されたデータを分割し、 帳票上で適切にそれを配置することです。 caption(見出し)[caption]は文字列型のプロパティで、レポートデザイナにおいて構成ツリーのノード見出しとして利用されます。 id(識別子)[id]は文字列型のプロパティで、グループの識別子を指定します。 レポートとグループの識別子はユニークである必要があります。 識別子は、帳票出力の実行時にプログラムから参照して利用することができます。 [caption(見出し)]が設定されていない場合は、識別子がレポートデザイナにおいて構成ツリーのノード見出しとして表示されます。 comment(コメント)[comment]は文字列型のプロパティで、グループのコメントを指定します。 コメントの内容は帳票の出力処理にはまったく影響しません。 デザイン作業のための覚え書きとして利用できます。 コメントの付けられたグループには、レポートデザイナの構成ツリー上で赤いマークが表示されます。 また、グループが選択されるとコメント内容がヘルプ欄に表示されます。 keys(ブレーク条件キー)[keys]はリスト型のプロパティで、 グループをブレーク(分割)するためのキーとなるデータ列名を指定します。 レポートデザイナ上で複数のキーを指定する場合は、カンマ区切りで書きます。 KEY1, KEY2, KEY3 指定するのは列名であって式ではないことに注意してください。 例えば上記の例を以下のように書くのは間違いです。 # 間違った例 .KEY1, .KEY2, .KEY3 detail(明細)
[detail]はブール型のプロパティで、
Trueを指定するとデータ1行毎にグループがブレークするようになります。 max_count(最大件数)[max_count]は数値型のプロパティで、グループに属することのできるデータ行数の最大値を指定します。 [keys(ブレーク条件キー)],[detail(明細)],[max_count]を全て省略すると、ブレークしないグループになります。 blank_data(空データ割当)[blank_data]はブール型のプロパティです。 Trueを指定すると、グループに空データが割り当てられます。 空データの割り当てられたグループの内容は、そのままでは表示されなくなります。 [layout(配置)][blank(空行を出力)]プロパティと組み合わせて指定することによって、 親コンテントに余白がある場合にのみ、その余白を埋めるようにグループの内容を表示することができます。 page_break(改ページ)[page_break]はブール型のプロパティです。 Trueを指定すると、グループがブレークするたびに改ページが行われるようになります。 reset_page_count(ページ数リセット)[reset_page_count]はブール型のプロパティです。 Trueを指定すると、グループがブレークするたびにページ数がリセットされるようになります。 sort_keys(ソートキー)[sort_keys]はリスト型のプロパティで、 割り当てられたデータをソートするためのキーとなるデータ列名を指定します。 列名の先頭に^(キャレット/ハット)記号を付ければ降順、付けなければ昇順でソートされます。 省略すると、ソートは行われません。 crosstab(クロス集計表)[crosstab]は文字列型のプロパティで、 このグループをクロス集計表のパーツとして構成するための設定を行います。 ※クロス集計表を作成する場合は、このプロパティを手動で直接設定するのではなく、 レポートデザイナの「クロス集計表を追加」機能から自動生成することをお勧めします。 このプロパティには、以下のいずれかの値を設定可能です。
split_string(文字列行分割)[split_string]には、文字列行分割を行うための設定項目を含んだオブジェクトを設定します。 文字列行分割とは、このグループに渡された文字列型データを、 改行位置または指定した幅で分割し、その結果を割り当てた子グループを生成する機能です。 この機能を活用することで、文字列全体を出力するために必要な行の数だけグループを繰り返すことができ、 親コンテントのサイズを可変にすることができます。 このオブジェクトは、以下のプロパティを持ちます。
layout(配置)[layout]には、グループをどのように配置すべきかを指定するオブジェクトを指定します。 このオブジェクトは以下のプロパティを持ちます。
custom_fields(カスタム列)[custom_fields]には、動的に計算されるデータ列を定義したオブジェクトのリストを設定します。 レポートの[custom_fields]プロパティと設定方法は同じです。 alternative_content(コンテント切替)[alternative_content]はブール型のプロパティです。 Trueにすると、レポートデザイナ上でグループに属するコンテントのうち、 選択中のものだけが表示されるようになります。 コンテントが多すぎてデザイン作業中に画面からはみ出してしまう場合などに利用します。 このプロパティの値はレポートデザイナに対してのみ影響します。 実際にプログラムから帳票を出力する際の動作には全く影響しません。 contents(コンテンツ)コンテントのリストを指定します。このプロパティは省略できません。 また、リストには少なくとも1つのコンテントが含まれている必要があります。 Content(コンテント)コンテントは帳票に表示される内容を定義するためのオブジェクトです。 コンテントは、グループに含まれます。 caption(見出し)[caption]は文字列型のプロパティで、レポートデザイナにおいて構成ツリーのノード見出しとして利用されます。 id(識別子)[id]は文字列型のプロパティで、コンテントの識別子を指定します。 識別子は、帳票出力の実行時にプログラムから参照して利用することができます。 [caption(見出し)]が設定されていない場合は、識別子がレポートデザイナにおいて構成ツリーのノード見出しとして表示されます。 comment(コメント)[comment]は文字列型のプロパティで、コンテントのコメントを指定します。 コメントの内容は帳票の出力処理にはまったく影響しません。 デザイン作業のための覚え書きとして利用できます。 コメントの付けられたコンテントには、レポートデザイナの構成ツリー上で赤いマークが表示されます。 また、コンテントが選択されるとコメント内容がヘルプ欄に表示されます。 size(サイズ)コンテントの高さを設定するオブジェクトを指定します。 親グループの[layout(配置)]>[direction(並べる向き)]が[horizontal(横方向)]ならば、コンテントの幅を指定するオブジェクトを指定します。
グループのサイズとコンテントのサイズは、 グループの[layout(配置)]>[direction(並べる向き)]に応じて次のように意味が変わります。 [direction]が[vertical(縦方向)]ならばグループのサイズは幅、 コンテントのサイズは高さを意味します。 [direction]が[horizontal(横方向)]ならばグループのサイズは高さ、 コンテントのサイズは幅を意味します。 layout(配置) ※サブコンテントのみ[layout]はサブコンテントにのみ設定可能なプロパティです。 サブコンテントが、メインとなるコンテント内にどのように配置されるかを示すオブジェクトを指定します。 このオブジェクトは以下のプロパティを持ちます。
background(背景) ※サブコンテントのみ[background]はブール型のプロパティで、サブコンテントにのみ設定可能です。 Trueを設定すると、このサブコンテントの要素は親のコンテントおよび兄弟のサブコンテントよりも背面に表示されます。 every_page(毎ページ表示)[every_page]はブール型のプロパティで、コンテントを改ページするたびに毎回表示するかを指定します。 every_page_blank_group(毎ページ空グループ)※このプロパティは5.0で廃止されました。 ただし、5.0以降をお使いの場合でも、互換性オプションの_4_37_EveryPageAllDataを設定している場合に限り有効となります。 [every_page_blank_group]はブール型のプロパティで、コンテントが[every_page]によって表示された場合、 子グループに空のデータを割り当てるかを指定します。 existence_cond(生成条件)[existence_cond]は文字列型のプロパティで、コンテントの生成条件を表す式を指定します。 ここで指定した式を評価した結果がtrueならばコンテントは生成され、falseならば生成されません。省略した場合は常に生成されます。 [visibility_cond(表示条件)]プロパティと機能が似ていますが、このプロパティを利用する方が、 コンテントの生成自体を行うかどうかを制御するために、帳票の出力処理が高速になります。 ただし[existence_cond]では、[visibility_cond]に比べて利用できるメソッドの種類に制限があります。 詳しくはを参照してください。 visibility_cond(表示条件)[visibility_cond]は文字列型のプロパティで、コンテントの表示条件を表す式を指定します。 ここで指定した式を評価した結果がtrueならばコンテントは表示され、falseならば表示されません。省略した場合は常に表示されます。 [existence_cond(生成条件)]プロパティと機能が似ていますが、 このプロパティではコンテントの生成は常に行った上で、表示するかどうかのみを制御します。 表示されないコンテントが大量に存在すると、帳票の改ページ処理(GetPages関数)の実行に時間がかかる場合があります。 その場合は[existence_cond]プロパティの利用を検討して下さい。 ただし[existence_cond]では、[visibility_cond]に比べて利用できるメソッドの種類に制限があります。 詳しくはを参照してください。 aggregate_src(集計対象)[aggregate_src]はブール型のプロパティで、このコンテントがXX_at,XX_pageメソッドの集計対象かを指定します。 同じグループに属するコンテントのうち、1つだけが集計対象となることができます。 集計対象コンテントが同じレベルに存在しない場合、XX_at,XX_page系のメソッドは利用できません。 unbreakable(改ページ禁止)[unbreakable]はブール型のプロパティで、 Trueを指定すると、このコンテントの直後で改ページされなくなります。 このプロパティによって、ヘッダの直後やヘッダの直前、 またはグループの途中で改ページされることを防ぐことができます。 以下の構造を持った帳票を例として、具体的に説明します。 この中にはheader,body,footerそしてdetailという4つのコンテントが存在します。 headerの[unbreakable]をTrueに設定すると、headerの直後(bodyの直前)で改ページすることを防げます。 bodyの[unbreakable]をTrueに設定すると、bodyの直後(footerの直前)で改ページすることを防げます。 なお、この指定だけではbodyの途中での改ページを防ぐことはできません。 detailの[unbreakable]をTrueに設定すると、bodyの途中で改ページすることを防げます。 なお、この指定だけではbodyの直後(footerの直前)での改ページを防ぐことはできません。 bodyの途中とbodyの直後(footerの直前)での改ページをともに防ぐには、 body, detailの両方で[unbreakable]をTrueに設定する必要があります。 header, body, detailの全てで[unbreakable]をTrueに設定すると、 グループの途中で改ページすることを防げます。 weight(ウェイト)[weight]は整数型のプロパティで、レポートの[page_capacity(許容ウェイト)]とともに利用されます。 詳しくは[page_capacity]の説明を参照してください。 variables(変数)[variables]には、このコンテントに含まれる要素から利用可能な変数を定義したオブジェクトのリストを設定します。 リストの要素となるオブジェクトは以下のプロパティを持ちます。
変数は var.[変数名] という式で参照することができます。 変数の値はコンテントが出力される際に計算されるため、[カスタム列]等では利用できないメソッドも利用することができます。 merge_content_id(差込コンテントID)このコンテントに差し込む、共有コンテントのIDを指定します。 elements(要素)このコンテントに含まれる要素のリストを指定します。 group(グループ)グループオブジェクトを指定します。 sub(サブコンテント)このコンテントに含まれるサブコンテントのリストを指定します。 サブコンテントは、親コンテントの上に重ねて表示されるコンテントです。 通常のコンテントと同様に、サブコンテントもグループを持つことができますが、 そのグループは改ページの判断に利用されることはありません。 1つのコンテントには複数のサブコンテントを含めることができるので、 例えばそれぞれに個別の[visibility_cond(表示条件)]を設定しておくことで、 表示される内容を動的に切り替えることができます。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright (c) 2013, SystemBase Co.,Ltd. All rights reserved. |