last update: Tue, 13 Aug 2024 04:42:45 GMT ( 10 months ago )
modifyData で自由にデータを取得・加工する
strech でグループごとにデータを加工する
fine_acnt_zan(sample)
prt.projection のサンプルとして、勘定科目残高(dtl.acnt_zan_gaku)からデータを取得する場合の設定にて各プロパティの説明をします。・設定後のイメージプロパティキー 設定例 備考 c "dtl.acnt_zan_gaku"
データの取得元コレクション名(省略形)を指定します。
データの取得処理は、この配列に指定された設定を前から順番に処理していきます。c_tmp "SSK.dtl.acnt_zan_gaku"
取得コレクションを一時的に変更したい場合に、コレクション名(フルに指定)を指定します。 fields {"kamoku_cd": "$kamoku.cd", ・・・}
対象のコレクションから取得したいフィールド名を{キー:値}のようにObject型で定義します。 p ["match", "sort", "project"]
データの取得は、aggregate で行われるため、その pipeline を指定します。 g "kamoku.cd"
データの取得は、aggregate で行われるため、その group を指定します。
指定する文字列は、コレクション上のフィールド名です。
※複数のフィールドでグループ化する場合は、
["ym", "kamoku.cd"] のように配列で指定します。selector "{\"start_ym\":\"%_START_YM_%\", ・・・}"
データの取得は、aggregate で行われるため、その selector を指定します。
文字列指定のため、selector 内の "(ダブルクオテーション)はエスケープする必要があります。sort "{\"kamoku.cd\":1}"
データの取得は、aggregate で行われるため、その sort オプション を指定します。
文字列指定のため、selector 内の "(ダブルクオテーション)はエスケープする必要があります。modify "javascript program"
selector に指定した検索条件を加工したい場合に指定します。
※引数には x(エックス)が渡されてきます。最後に必ずreturn x;する必要があります。
※記述方法については、「Tips : modify で selector を加工する」を参照。modify_args ["soshiki","kamoku","modifyData"]
modify 内部で利用したいデータがある場合は、そのキーを配列で指定します。 stretch "javascript program"
gで指定して取得したグループ単位のデータをロジックで加工したい場合にそのスクリプトを指定します。
※記述方法については、「Tips : strech でグループごとにデータを加工する」を参照。stretch_args ["match", "sort", "project"]
stretch 内部で利用したいデータがある場合は、そのキーを配列で指定します。 modifyData "javascript program"
projection 処理の最初(x="init")と最後にロジックを実行したい場合にそのスクリプトを指定します。
※記述方法については、「Tips : modifyData で自由にデータを取得・加工する」を参照。modifyData_args ["match", "sort", "project"]
modifyData 内部で利用したいデータがある場合は、そのキーを配列で指定します。 Tips(projection)
セルの背景色を指定する
template プロパティ == 「plainBlockPart」 を利用template プロパティに、「plainBlockPart」、もしくは、false を指定し、ブロックエリアを利用し、任意の位置にボックスを置くことで、背景色をつけるサンプルを掲載します。・サンプル・設定後のイメージ・items プロパティの定義items プロパティに以下のように記述すると好きな位置にボックスを描画することが可能です。
下記の例では、1つ目のrect:x:0, y:0 の位置から、幅388mm、高さ12mm の#222色の枠線を引く2つ目のline : x:0, y:0 の位置から、幅388mm、高さ12mm の枠線を引き、#eeeの色で塗りつぶす[
["rect", {x: 0, y: 0, width: 388, height: 12, stroke: "#222"}],
["rect", {x: 0, y: 0, width: 388, height: 12, fill: "#eee"}],
]template プロパティ == 「matrixPart」 の場合・サンプル・設定後のイメージ自由に罫線を引く
template プロパティに、「plainBlockPart」、もしくは、false を指定し、ブロックエリアを利用し、任意の位置に罫線を引くサンプルを掲載します。・サンプル・設定後のイメージ・items プロパティの定義items プロパティに以下のように記述すると好きな位置に罫線を引くことが可能です。
下記の例では、1つ目のline:ヘッダーの途中から途中までの横線2つ目のline : ヘッダーの左端の斜めの線[
["line", {x1: 62, y1: 24, x2: 254, y2: 24, stroke: "#222"}],
["line", {x1: 0, y1: 20, x2: 62, y2: 28, stroke: "#222"}]
]※stroke-dasharray: "2" or "2 3" を指定すると、「破線」を描画できます。
("2" -> 実線2 余白2 の意味。"2 3" -> 実線2 余白3 の意味)ヘッダーを動的に加工する
以下のサンプルのように、検索した年月より向こう18ヶ月分の情報を出力するようなケースでは modifyHead プロパティを使って動的にヘッダーを加工します。・サンプル・設定後のイメージ(ルート)(head > row1 の中身)・modifyHead プロパティの定義modifyHead プロパティには、javascript ロジックを記述します。
ヘッダーの定義に基づいて検索条件の値から表示文字列を生成しています。// jken_obj の ym (年月)を使って n に指定した月数分ずらした年月を取得する
var fix =n=>fn.sync.YMDHMS(fn.sync.procTo(jkn_obj.ym, n, 'date'), 'Y/M');
switch(x.row_key) { // x.row_key には、head に定義したキーが入ってくる
case "row1": // head のキーが row1 の場合に処理
x.line[1][0]=fix(0); // x.line[1][0] ==> head > row1 の 1 インデックスの "ym_0" を指している
x.line[2][0]=fix(1);
x.line[3][0]=fix(2);
x.line[4][0]=fix(3);
x.line[5][0]=fix(4);
x.line[6][0]=fix(5);
x.line[7][0]=fix(6);
x.line[8][0]=fix(7);
x.line[9][0]=fix(8);
x.line[10][0]=fix(9);
x.line[11][0]=fix(10);
x.line[12][0]=fix(11);
x.line[13][0]=fix(12);
x.line[14][0]=fix(13);
x.line[15][0]=fix(14);
x.line[16][0]=fix(15);
x.line[17][0]=fix(16);
x.line[18][0]=fix(17);
}・modifyHead_args プロパティの定義modifyHead プロパティにて、jkn_obj を利用しているため、それを modifyHead に渡すために以下の設定をしています。
modifyHead_args : ["jkn_obj"]
plainBlockPart
template プロパティに、「plainBlockPartpart」、もしくは、「false」、もしくは指定がない場合は、plainBlockPart が選ばれたものとして取り扱われます。
plainBlockPart とは、任意のブロックを定義するためのレイアウトになります。plainBlockPart のレイアウトプロパティの詳細になります。・設定後のイメージプロパティキー 設定例 備考 data "find_daicho"
aggregate の設定にて、データを集計する定義をした際のキーを指定します。
帳票の出力に指定できるデータは一つのみになります。lines [
[["ラベル", 25], ["ラベル", 15], ・・・],
[["=field1", 25], ["=field2", 15], ・・・]
]レイアウト定義になります。配列
複数行を定義する場合はそれぞれを配列として追加します。
※ひとつのセルに対する定義については後述。print {
position: { x: 120, y: 40 },
timing: "always"
}レイアウト定義になります。配列
position では、x(=横位置:ミリ単位)と、y(縦位置:ミリ単位)を指定します。
timing とは、このブロックが描画されるタイミングを指定します。
・選択肢・always:データ行ごとに描画・skipIf:合わせて指定されるskipif プロパティが「false」、指定なしの場合描画・wholeHead:帳票の1ページ目にのみ描画・wholeFoot:帳票の最終ページ目にのみ描画・groupHead:データのグループごとの1ページ目にのみ描画(未実装?)・groupFoot:データのフループごとの最終ページ目にのみ描画(未実装?)skipIf "java script"
データの各行単位で呼び出されて、その行データが出力対象かどうかのフラグを返すロジックを記述します。
※true / false のいずれかを return する必要があります。row_height 2
ブロックエリア全体の行の高さを指定します。
高さが2以上の場合の表示文字列の縦位置はデフォルトで中央寄せ("middle")になります。template false/"plainBlockPart"
レイアウトタイプの指定になります。 border true/ false
ブロックエリア全体に対して、罫線を描画するかを指定します。
trueを指定した場合、すべてのセルに罫線がつきます。
※レイアウト上、罫線を一部つけたくないという場合は、「false」指定した上で、レイアウト:自由罫線を利用して罫線を描画してください。・セルの定義について[表示文字列, 幅 [, 横位置] [, 縦位置] [, オプション]]
プロパティ 説明とサンプル 表示文字列 そのセルに表示したい文字列を指定します。
指定は、文字列をそのままの場合は、"表示したい文字列"
データの中身を表示する場合は、"=フィールド名"
とします。(=を忘れないように)幅 幅をミリ単位で指定します。 横位置 表示文字列の横位置を指定します。
・選択肢・left、指定なし:左寄せ・center:中央寄せ・right:右寄せ縦位置 セルの高さが2以上の場合に、その縦位置を指定します。
・選択肢・top:上寄せ・middle、指定なし:中央寄せ・bottom:下寄せオプション セルの装飾やスタイルを指定できます。
・文字の色{ fill: "#f22" }
・背景色{ "background-color" : "#f22" }
・折り返しなし{ "white-space" : "nowrap" }
・文字溢れ非表示{ "overflow" : "hidden" }
matrixTable
template プロパティに、「matrixTable」を指定するとヘッダーとボディを持つテーブル形式のレイアウトが定義できます。
matrixTable に渡されるデータは配列となっており、ボディ部分に定義したレイアウトに沿って全てのデータが描画されます。matrixTable のレイアウトプロパティの詳細になります。・設定後のイメージプロパティキー 設定例 備考 data "find_daicho"
aggregate の設定にて、データを集計する定義をした際のキーを指定します。
帳票の出力に指定できるデータは一つのみになります。print {
position: { x: 120, y: 40 },
timing: "skipIf",
skipIf: "return x.gaku == 0;"
}レイアウト定義になります。配列
position では、x(=横位置:ミリ単位)と、y(縦位置:ミリ単位)を指定します。
timing とは、このブロックが描画されるタイミングを指定します。
・選択肢・always:データ行ごとに描画・skipIf:合わせて指定されるskipif プロパティが「false」、指定なしの場合描画・wholeHead:帳票の1ページ目にのみ描画・wholeFoot:帳票の最終ページ目にのみ描画・groupHead:データのグループごとの1ページ目にのみ描画(未実装?)・groupFoot:データのフループごとの最終ページ目にのみ描画(未実装?)skipIf "java script"
データの各行単位で呼び出されて、その行データが出力対象かどうかのフラグを返すロジックを記述します。
※true / false のいずれかを return する必要があります。head {
もしくは
row_height : 1,
row1 : [["ラベル", 25], ["ラベル", 15], ・・・],
][["ラベル", 25], ["ラベル", 15], ・・・]
ヘッダーのレイアウト定義になります。
配列もしくは、オブジェクト型で定義します。
ヘッダーを複数行にしたい場合は、オブジェクト型で、行ごとにキーと配列を定義します。body {
もしくは
row_height : 1,
row1 : [["=field1", 25], ["=field2", 15], ・・・],
][["=field1", 25], ["=field2", 15], ・・・]
ボディ部のレイアウト定義になります。
配列もしくは、オブジェクト型で定義します。
ボディを複数行にしたい場合は、オブジェクト型で、行ごとにキーと配列を定義します。style {
"font-size": "10pt"
}テーブル全体のスタイルを指定します。
※本例では、フォントサイズを10ptにしています。template "matrixTable"
レイアウトタイプの指定になります。 border true/ false
テーブル全体に対して、罫線を描画するかを指定します。
trueを指定した場合、すべてのセルに罫線がつきます。
※レイアウト上、罫線を一部つけたくないという場合は、「false」指定した上で、Tips(draw):自由に罫線を引くを利用して罫線を描画してください。Tips(draw)
これより下には、特殊な印刷に対応するサンプルを記載していきます。requireCommandとは
requireCommand とは、「管理者タブ」等に表示されている、「コマンド管理・実行画面」で定義できるロジックのことです。本画面にて定義したロジックはDB上に保管されいつでも実行・編集が可能です。繰り返し行うような作業や、調査、データ出力などを定義しておくと非常に便利なツールになります。(画面イメージ)・メニュー・一覧・入力(新規作成時にデフォルトでセットされるものを実行した結果)記述ルール
帳票出力機構において、requireCommand を利用する場合には以下の点に注意してください。1)文字列として「 "rc('呼び出したいコマンドの名前')" 」を指定※「' 」(シングルクオテーション)を忘れずに。2)requireCommand では必ず Promise を返す3)xxxx_args に指定しているarguments がその名前をキーとして受け渡される4)3)で渡されるデータに requireCommand 側で直接変更を加えることが可能※記述例はこれ以降を参照してください。modifyDataサンプル
ここでは、データ取得と加工を行いデータを返すことが可能な「modifyData」のサンプルを掲載します。(DBの設定)(コマンド実行の記述)
基本情報
データの第一階層のプロパティになります。・設定後のイメージプロパティキー 設定例 備考 kaisha_cd "SSK"
会社コードを指定します。 reg_no "003"
帳票登録番号を指定します。(一意にすること) reg_nm "個別出勤簿"
帳票名を指定します。(データ出力画面の帳票名、帳票出力時のタイトルになります。) explain "月次資料"
帳票の簡単な説明を指定します。(データ出力画面の説明欄に表示されます。) tab_kbn ["kanri"]
システム上のどのタブ(販売、経費、経理、会計)に表示するかを指定します。(配列)※環境によって違う場合あり。 ・管理:kanri・販売:hankan・経費:keihi・経理:keiri・会計:kaikeimenu_kbn "mst_prt"
tab_kbn に指定したタブ上のリンクに指定されている data-recipe を指定します。> mdl_kbn "kanri"
基準となる処理年月を管理するモジュール区分を指定します。※環境によって違う場合あり。 ・管理:kanri・販売:hankan・経費:keihi・経理:keiri・会計:kaikeiprt_kbn "kanri"
おまとめ印刷(未実装)用のカテゴライズ(配列指定になる予定) report_type "multi-list"
出力タイプ(現在未使用) ・TABLE:一覧表・合計差込型・PIVOT:分析表、内包型・COMPLEX:混在帳票・PAGING_TABLE:ページ分割一覧表・multi-list:混合一覧prt {active: true, paper: {・・・}}
印刷用設定。オブジェクト型。※後述 csv {active: true, ・・・}
出力用設定。オブジェクト型。※後述 dsp {active: true, ・・・}
検索用設定。(未実装)オブジェクト型。※後述 prt
prt プロパティの詳細になります。・設定後のイメージプロパティキー 設定例 備考 active "true"
「印刷」ボタンを有効にする場合に true を指定します。(false で非表示) rasterize "false"
ラスタライズを有効にして出力するには true を指定します。(デフォルトは false。大量ページの印刷が可能になりますが、印字が少し荒くなります。) paper {
"paper":"A4_横",
"margin":{
"left":"5mm", "top":"5mm",
"right":"5mm", "bottom":"5mm"
}
}帳票の用紙と余白などの設定をします。 type "PIVOT"
帳票のタイプを指定します。 ・TABLE:一覧表・合計差込型・PIVOT:分析表、内包型・COMPLEX:混在帳票・PAGING_TABLE:ページ分割一覧表・multi-list:混合一覧projection {"sequence": ["xxx","yyy"], ・・・}
データ取得設定を定義します。※後述 aggregate {"sequence": ["xxx","yyy"], ・・・}
projection で取得したデータの集計・ソート・グルーピングの設定を定義します。※後述 draw {"sequence": ["xxx","yyy"], ・・・}
aggregate 処理にて整形されたデータの印刷設定を定義します。※後述 csv
csv プロパティの詳細になります。・設定後のイメージプロパティキー 設定例 備考 active "true"
「出力」ボタンを有効にする場合に true を指定します。(false で非表示) sequence ["output"]
CSVの出力処理を配列で指定します。
CSVの出力処理は、この配列に指定された設定を前から順番に処理していきます。
(配列に指定するキー名は任意ですが、次に記述する設定キーと同一のものを指定してください。)output {"headers": {"xxx": "ラベル", ・・・}
sequence 配列に指定したキーをキーとしてその設定を値に定義します。※後述 ・output(名称は任意)のプロパティ詳細は以下になります。・設定後のイメージプロパティキー 設定例 備考 headers {"xxx": "ラベル", ・・・}
CSVのヘッダー部分になります。
Object型になり、サンプルは以下です。modifyHead "javascript logic."
CSVのヘッダーの一部を動的に書き換えたい場合に定義します。
文字列です。
詳細は、tips : ヘッダーを動的に変更したい。を参照してください。modifyHead_args ["jkn_obj"]
modifyHeadに検索条件(jkn_obj)等を渡したい場合にそのキー文字列を配列で指定します。 keys ["shain_cd", "shain_nm", ・・・]
出力したいフィールドを配列で指定します。 dsp
dsp プロパティの詳細になります。(未実装ですが active: false が必要)・設定後のイメージプロパティキー 設定例 備考 active "false"
「検索」ボタンを有効にする場合に true を指定します。(false で非表示) projection
prt.projection では 画面からの条件指定に基づき、ある程度限定的なデータを取得します。
※データベースにアクセスするのはここが最後ですが、ここで表示したいデータを表示したい順序にするのではありません。
あくまで「材料」の取得であることに留意してください。・projection がどのように挙動するかの詳細フローになります。・prt > projection プロパティの詳細になります。・設定後のイメージプロパティキー 設定例 備考 sequence ["soshiki", "kamoku", "find_acnt_zan", ・・・]
データの取得処理を配列で指定します。
データの取得処理は、この配列に指定された設定を前から順番に処理していきます。
(配列に指定するキー名は任意ですが、次に記述する設定キーと同一のものを指定してください。)soshiki {
"template": "soshiki",
"soshiki_zu_no": "SHIKIN1:S1"
}sequence 配列に指定したキーをキーとしてその設定を値に定義します。
このサンプルのsoshiki というキーは任意です。
設定に template を指定する場合(オプションあり)のサンプルになります。
※ template については後述kamoku {"template": "kamoku"}
sequence 配列に指定したキーをキーとしてその設定を値に定義します。
このサンプルのkamoku というキーは任意です。
設定に template を指定する場合(オプションなし)のサンプルになります。
※ template については後述find_acnt_zan {"c": "dtl.acnt_zan_gaku", "fields": {・・・}}
sequence 配列に指定したキーをキーとしてその設定を値に定義します。
このサンプルのfind_acnt_zan というキーは任意です。
※ 実際の設定内容サンプルについては後述※template (テンプレート)の一覧とその指定内容は以下です。キー 設定例/サンプル 備考 kamoku {"template": "kamoku"}
{
"11110": {
nm: "普通預金",
kbn: {
bs_pl: "bs",
・・・(中略)
}
}勘定科目マスタ(mst.acnt_kamoku)のデータを取得します。 soshiki {
"template": "soshiki",
"soshiki_zu_no": "SHIKIN1:S1"
}{
"C50": {
nm: "普通預金",
kbn: {
bs_pl: "bs",
・・・(中略)
}
}組織マスタ(mst.soshiki)のデータを取得します。
※soshiki_zu_no の設定ルール
・組織図Noは、組織マスタに定義されているものを指定
・: (コロン)で条件を追加可能。trad {"template": "trad"}
{
"65900": {
nm: "サンプル",
}取引先マスタ(mst.trad)のデータを取得します。 user/maker {"template": "user"}
{
"65900-001": {
nm: "サンプル",
}取引先詳細マスタ(mst.trad_dtl)のデータを取得します。 shain {"template": "shain"}
{
"999": {
nm: "直井",
}社員マスタ(mst.shain)のデータを取得します。 souko {"template": "souko"}
{
"010": {
nm: "客先直送"
}倉庫マスタ(mst.souko)のデータを取得します。 bank {"template": "bank"}
{
"0001-001": {
nm: "みずほ銀行 本店営業部"
}銀行マスタ(mst.gp, type: bank)のデータを取得します。 kuni {"template": "kuni"}
{
"JPN": {
nm: "日本国"
}国マスタ(mst.gp, type: kuni)のデータを取得します。 kanri {"template": "bank"}
{
"99": {
nm: "99(指定なし)"
}管理項目マスタ(mst.gp, type: kanri)のデータを取得します。 zei_kbn {"template": "zei_kbn"}
{
"10E": {
nm: "10%別"
}税区分マスタ(mst.gp, type: zei_kbn)のデータを取得します。 tekiyo {"template": "tekiyo"}
{
"00": {
nm: "サンプル"
}摘要マスタ(mst.gp, type: tekiyo)のデータを取得します。 group {"template": "group"}
{
"MKR": {
nm: "メーカー"
}グループマスタ(mst.gp, type: group)のデータを取得します。 trad_group {"template": "trad_group"}
{
"XXX": {
nm: "取引先グループ名"
}取引先グループマスタ(mst.gp, type: trad_group)のデータを取得します。 hin {"template": "hin"}
{
"0001-001": {
nm: "みずほ銀行 本店営業部"
}品目マスタ(mst.gp, type: hin)のデータを取得します。 tanni {"template": "tanni"}
{
"0001-001": {
nm: "みずほ銀行 本店営業部"
}単位マスタ(mst.gp, type: tanni)のデータを取得します。 uwabasho {"template": "uwabasho"}
{
"0001-001": {
nm: "みずほ銀行 本店営業部"
}受渡場所マスタ(mst.gp, type: uwabasho)のデータを取得します。 hwatashi {"template": "hwatashi"}
{
"00": {
nm: "引き渡し先名",
}引渡先マスタ(mst.gp, type: hwatashi)のデータを取得します。 (執筆中) {"template": "xxx"}
{
"00": {
nm: "引き渡し先名",
}xxxマスタ(mst.gp, type: xxx)のデータを取得します。
keihi_kbn/ keihi_shiharai_kbn_group/ keihi_shiharai_kbn/ kind_kbn/ tenmatsu_kbn/ shain_kbn/ kotsu/ shuku/ nitto/ koza/ category/ kategory_kanricalendar {"template": "calendar"}
{
"2020/02/01": {
koyomi: true,
kaisha: false,
bank: true
},・・・
}カレンダーマスタ(mst.calendar)のデータを取得します。
※期間検索条件(ymd, ym)のいずれかを指定している必要あり。
・true = 休日, false = 平日aggregate
執筆中draw
prt.draw では印刷のレイアウト、出力タイミング、表示データ列名などを定義します。・出力サンプルprt > draw プロパティの詳細になります。・設定後のイメージプロパティキー 設定例 備考 sequence [
"reportHeader",
"tsukaNm",
"taniNm",
"dataTable",
"tableLine",
"reportFooter"
]帳票出力処理を配列で指定します。
帳票の出力処理は、この配列に指定された設定(レイアウト)を前から順番に処理していきます。
※定型レイアウトとして
・reportHeader : レポートのヘッダー
→(文書タイトル、印刷日、ページ)
・reportFooter : レポートのフッター
→(会社名等)
が用意されています。
(上記以外の配列に指定するキー名は任意ですが、次に記述する設定キーと同一のものを指定してください。)output
上記のサンプルではtsukaNm, taniNm, dataTable, tableLine にあたるもの。{"data": "xxx",・・・}
レイアウトの定義は以下のパターンごとにそれぞれ違います。
・plainBlockPart : ブロックエリア(固定エリア)
・matrixTable : 表形式
・barGraph : 棒グラフ
・lineGraph : 折れ線グラフ
・罫線 : plainBlockPart を使って自由な罫線をひきたい場合
※指定しない場合は、plainBlockPart として取り扱われます。
それぞれの定義ごとに後述します。requireCommand の利用
帳票出力機構内の以下の記述部分について、requireCommand(コマンド実行)を呼び出すことができます。・projection.modifyData・projection.modify・projection.stretch・aggregate.join・aggregate.calc・aggregate.skipIf・aggregate.fixData・aggregate.sort・aggregate.treatment・draw.skipIf・draw.beforeWrite・draw.modifyContext・draw.modifyHead・draw.modifyBody・csv.modifyHead・pieChart.radius・draw.calcX・draw.labelX・draw.calcY・draw.labelY
データ出力帳票
以下に、帳票設定(mst.report_setting)に保存するデータの定義を記載します。