見積書や請求で明細がとても長いケースがあります。gusuku CustomineのExcel/PDFではExcelでテンプレートを作りますので明細が長くなる場合には、Excelの行ヘッダ機能を使って2ページ目以降にもヘッダを出す形で明細を作ることができます。
Excelの行ヘッダで作成する場合
長い明細をExcelの行ヘッダを使って出力すると、このような形になります。
gusuku Customineで複数のレコードやテーブル行、関連レコードを出力する場合には「$FOREACH」という指示を使いますので、明細を出力する部分では、$FOREACHを使ってこのように出力しています。
これでも複数ページには綺麗に出せるのですが、合計と一番下にある備考欄は見てもらいやすいように1ページ目に出したいということはよくあると思います。
ただ、そのような場合は、Excelの行ヘッダではうまくできません。やりたいことは次のようなことになります。
1ページ目に出す明細は、決まった行数だけにして、その下に合計や明細を出したい
残りは2ページ目に全て出したい
出力する行の範囲を指定する方法
この$FOREACHには出力する範囲を指定する機能があります(この機能をスライスと呼んでいます)。
スライスを使うと、以下のような指定ができます。
$FOREACH(0..9)
この意味は、1件目から10件目まで出力するという指定になります。開始が0からであることに注意してください。テーブルや関連レコードの場合は、どのテーブルや関連レコードを出すかを指定しないといけないので、こうなります
$FOREACH(テーブル名)(0..9)
$FOREACH(関連レコード名)(0..9)
「..」の前後の数字は、省略することが可能で省略すると「全て」の意味になります。ですので「5..」と指定すると、6行目から後ろ全てという指定になります。
スライスを利用した出力
このスライスを使うと、最初の例の見積書はこのように変えることができます。
スライスを利用することで、1ページ目に10行、2ページ目にそれ以降の明細を出力しています。
テンプレートでは、スライスを使って、出す行を制御しています。
スライスの活用方法
見ていただいたようにスライスは、自在に出力する範囲を制御できるため、1ページ目と2ページ目でレイアウトが変わるような帳票には便利に活用いただけます。
さらに、このスライスは、レコードやテーブル、関連レコード以外にも、チェックボックス、ユーザー選択、組織選択、グループ選択にも使えます。例えば、ユーザー選択の1人目だけを代表者として特定の項目に出力して、2人目以降をメンバーとして別の項目に出力するなんてことも可能です。
加えて、このスライスは、文字列複数行にも使うことができ、スライスすると文字列を行ごとにバラバラにできます。
スライスはかなり応用のできる機能ですので、みなさん活用してください!