4D Write Pro ドキュメントの表組みは、データソースを関連付けることで 自動的に行を生成 できるようになり、ますます便利になりました。
表組みの行数が多くなると、ページやカラムの区切りにより、表が自動で分割されてしまうことがあります。このような場合、分割された各表の下部に “小計” 行 を (自動的に!) 挿入できたら便利ですね。これは 4D v19 R7 で可能になりました!
HDI: 4D Write Pro: 下部キャリーオーバー行
百聞は一見にしかず
長い文章より図で説明しましょう。キャリーオーバー行の機能は下図のとおりです:
ご覧のとおり、改ページにより分割されてしまった各表の下部に小計行 (キャリーオーバー行) が追加されています。
これは、たとえば長い請求書を編集するときに必要となり、法的に求められることもあります。
テンプレートでは一行、最終ドキュメントでは必要なだけ
冒頭で述べたように、このプロパティはすべての表組みで利用可能です。ただし、表組みがデータソース (コレクションまたはエンティティセレクション) と関連付けられている場合にのみ実際に考慮されます。このプロパティを有効にすると、テンプレート行の次がキャリーオーバー行になります。
インターフェースから設定
どちらのインターフェース (ツールバーおよびサイドバー) でも、表組みのメニューに新しい項目 “下部キャリーオーバー行” が追加されています。
… あるいは、プログラミングによって
WP SET ATTRIBUTES($table ; wk bottom carry over row ; True | False)
表示される場合、されない場合
テンプレートでは単一行として表示されるこのキャリーオーバー行は、評価されたドキュメントにおいては必要なだけ複製されます。
ただし、表組みが分割されない場合には、キャリーオーバー行に出番はありません。この場合、キャリーオーバー行はドキュメントに表示されません。
表組みが分割される場合には、最後の分割部を除くすべての末尾にキャリーオーバー行が挿入されます。分割された表の最後の部には、小計ではなく “合計行” が表示されるべきですので、キャリーオーバー行は挿入されません。テンプレートにおいても、キャリーオーバー行の後に、表組みの最終行が続きます。
キャリーオーバー行の内容
キャリーオーバー行のセルの内容は、どのように定義すればよいでしょうか。
お察しの通り、previousItems という新しい属性が生まれ、以下のように使うことができます:
This.previousItems.sum("price")
This.previousItems は、表組みのデータソースに応じて、エンティティのコレクションまたはセレクションを返します。
このセットには、現在のページとそれまでのページですでに評価されたすべての項目が含まれます。コレクションまたはエンティティセレクションに対して利用可能なすべての関数 (min / max / sum など) が適用できます!
注記: This.previousItems は、主にキャリーオーバー行での使用を目的に設計されているものの、このコンテキストに限定された属性ではないことに注意してください。この属性は、表組み内の任意の場所 (ヘッダーを除く) で使用でき、それぞれのコンテキストに応じた値をもちます。
まとめ
この新しいプロパティは複雑なコードを排除し、改ページを含む表組みの扱いを楽にします。美しいテンプレートを作成し、複雑なコーディングを回避することをお楽しみください。
あなたのフィードバックをいつでも歓迎しています。4Dフォーラム で、ぜひ議論に参加してください。
キャリーオーバー行についての詳細は、ドキュメント を参照ください。