出力内容をカスタマイズする

最終更新日: 2021年3月7日
R8 | R9

定義方法

「画面 > スクリプト > ヘルパ」から "帳票内容の編集" を選びます。

図1 スクリプトを記述する

スクリプトが呼び出されるタイミング

作成したスクリプトは(詳細画面または一覧画面に用意された)帳票ボタン押下後に標準の帳票データが用意されたあと、印刷処理にそのデータが渡される直前に呼び出されます。そのため、標準の帳票データを差し替えることができます。

仕様

スクリプトで利用できるオブジェクト

スクリプト内では次のオブジェクトが利用できます。

REPLACEMAP

キーおよび値に文字列を格納したマップ (java.util.Map) です。キー部分には次の命名規則があります。

キー表記 説明
${モデルID_p.項目ID} 詳細表示の内容
${モデルID_lp.行番号.項目ID} 一覧表示の内容
${モデルID_cp.項目ID} 一覧表示の検索条件の内容。範囲検索の場合、項目IDの末尾に "1jshparam" と "2jshparam" が付与される。

REPLACETYPEMAP

項目の型情報を含むマップ (java.util.Map) です。キー部分のルールは REPLACEMAP と同じです。値部分は型情報になります。

例1 REPLACEMAPの内容をコンソールに表示する

REPLACEMAP の実体は java.util.Map です。そのため java.util.Iterator を使ったマップの操作を行うことができます。

var it = REPLACEMAP.keySet().iterator();
while (it.hasNext()) {
  var key = it.next();
  var value = REPLACEMAP.get(key);
  print(key+"="+value);
}

例2 REPLACEMAPの内容を改変する

次の例は、すべての値に "*" 文字を付与するものです。

var it = REPLACEMAP.keySet().iterator();
while (it.hasNext()) {
  var key = it.next();
  var value = REPLACEMAP.get(key);
  value = value + "*";
  REPLACEMAP.put(key,value);
}

エラーの扱い

スクリプト中に return 文で任意の文字列を返すと、エラーとして扱います。このとき、スクリプト実行中に BusinessLogicException が生じます。これはログ (system.log) にエラーとして記録されます。

さらに、スクリプト中で画面に表示されるエラーメッセージを用意することもできます。

var error = new Jfcerror();
error.content="エラーです";
p.errors.addJfcerror(error);
return "ERROR!";

注意

この仕組みを応用して、帳票出力内容がある条件に合致した場合、その出力を行わずにエラーとし、画面にエラーメッセージを表示させることができます。

画像の扱い

プレースホルダ jshfilename:image 表記ではなく、スクリプトで表示範囲を指定することもできます。スクリプトの設定が優先されます。

REPLACEMAP.put("${customer_p.photo_jshfilename:image:col}","10");
REPLACEMAP.put("${customer_p.photo_jshfilename:image:row}","10");
REPLACEMAP.put("${customer_p.photo_jshfilename:image:sx}","0.5");
REPLACEMAP.put("${customer_p.photo_jshfilename:image:sy}","0.5");

値は文字列なので、ダブルクォートで囲む必要があります。

帳票テンプレートのプレースホルダに jshfilename:image 指定がなければ、上記の設定は無視されます。

制約

  • 本ページに記載の内容は Excel 帳票のみで有効です。(JasperReportによるPDF出力には対応していません。)