一覧帳票出力後の更新
最終更新日: 2021年12月15日
R8 | R9
「帳票出力後」または「帳票出力後(一覧)」ボタン押下時の処理をスクリプトコードとして記述することができます。
帳票出力の対象となったモデルの「帳票出力日」項目に値をセットするスクリプトは次のとおりです。
このスクリプトは詳細画面・一覧画面のいずれにも適用できます。一覧画面の場合、帳票出力の対象データすべてに適用されます。
値の変更後、詳細画面(または一覧画面)に表示されるデータには、printdatetime 項目は更新前の値が表示されています。更新後ではありません。これは帳票出力が成功したタイミングで値が更新されますが、画面表示用のデータはその前に用意されているためです。
画面を再描画すると、更新された値を確認することができます。
整数型の項目 printcount を用意します。次のスクリプトは、帳票出力の都度、値を 1 つ増やすものです。
このスクリプトは詳細画面・一覧画面のいずれにも適用できます。一覧画面の場合、帳票出力の対象データすべてに適用されます。
値の変更後、詳細画面(または一覧画面)に表示されるデータには、printdatetime 項目は更新前の値が表示されています。更新後ではありません。これは帳票出力が成功したタイミングで値が更新されますが、画面表示用のデータはその前に用意されているためです。
画面を再描画すると、更新された値を確認することができます。
複数の帳票パターンを用意している場合、どのボタンを押されたかによって処理を分岐させることができます。
ボタン押下によって、p.action に値がセットされています。この値を使って次のような条件分岐を行ってください。
最初はスクリプトに
などと記載し、どのボタンが押されたら、どのような値が p.action に格納されるかを調べておくとよいでしょう。
このスクリプトは一覧帳票出力において、チェックボックスで選択した複数のデータに対しても適用されます。
定義方法
[例] 出力後に「帳票出力日」という項目に値をセットする
var entityService = p.appctx.getBean("CustomerEntityService");
try {
var n_customer = entityService.findById(customer.customerid, true);
n_customer.printdatetime = ExcelFunction.NOW();
entityService.update(n_customer);
print(n_customer);
} catch (e) {
print(e);
}
true
を設定することで、ロックをかけます。注意点
[例] 出力した数をカウントアップする
var entityService = p.appctx.getBean("CustomerEntityService");
try {
var n_customer = entityService.findById(customer.customerid, true);
n_customer.printcount = n_customer.printcount + 1;
entityService.update(n_customer);
} catch (e) {
print(e);
}
true
を設定することで、ロックをかけます。注意点
[例] 複数の帳票ボタンによって処理を変える
if (p.action == "PrintCustomer_showListCustomer") {
...
}
開発のポイント
print(p.action);
仕様