gusuku Customineで公式にサポートされているkrewSheetは、非常に独特なプラグインです。これをカスタマイズする際には注意が必要なのですが、その中でも特に「krewSheet を表示した時」の挙動については注意が必要なので解説します。
基本的な動作原理
Customineの「やること」は、基本的に直前の条件(イベント)発生レコードのみに適用されます。例えば「一覧画面を表示した時」であれば、一覧画面を表示したときに表示されているレコードが対象となります。
この大前提から逸れる「やること」が「krewSheet を表示した時」です。
「krewSheet を表示した時」とパラメーター「保存後の再描画時も含めるかどうか」の組み合わせについて
「krewSheet を表示した時」には、「再読み込み時も含めるかどうか」と「保存後の再描画時も含めるかどうか」の2つのパラメーターが用意されています。
2つ目のパラメーター「保存後の再描画時も含めるかどうか」を「保存後の再描画時も含める」にセットしている場合、注意が必要になります。
特別な配慮がされるケース
まずこちらの設定をご確認ください。
このカスタマイズを実行すると、以下のような挙動になります。
画面を最初に表示した時には、表示されているすべてのレコードのフィールドを無効化する
krewSheetでレコードを保存した後の再描画時にも、表示されているすべてのレコードのフィールドを無効化する
「基本的な動作原理」から考えると、保存した後の再描画時は保存したレコードのみ無効化されるのでは?と思うかもしれませんが、そうではありません。この仕様は、出来る限り簡単にカスタマイズ出来るようにという配慮のもとで決められた仕様となります。
特別な配慮がされず、上記のようにならないケース
次にこちらの設定をご確認ください。
このカスタマイズを実行すると、以下のような挙動になります。
画面を最初に表示した時には、表示されているすべてのレコードのフィールドを無効化する
krewSheetでレコードを保存した後の再描画時には、保存されたレコードのフィールドを無効化する
レコードを保存した後の挙動が異なるのが分かります。これは、特殊な仕様が適用されない例になります。
先程の例では、「krewSheet を表示した時」の条件に直接やること「フィールドを無効化する」がセットされていたので特殊な挙動になりましたが、こちらの例では「他のアクションの実行が完了した時」でつながったアクションになりますので、特殊な挙動にはならず、「基本的な動作原理」通り、直前の条件(イベント)発生レコードのみにやることが適用されている形です。
この挙動への対処方法
このように「krewSheet を表示した時」には使いやすい配慮がされていますが、続けて複数の複雑なやることを実行したい場合には問題がおこるケースがあり得ます。
上記の例で、保存後にも表示されているすべての行に「やること」を実行したい場合には、追加で別の条件「krewSheet を保存してシートを再描画する時」を追加して、同じ「やること」をセットしてください。
条件「krewSheet を保存してシートを再描画する時」では、再描画するレコードがすべて対象となりますので、保存したレコードを含むすべての表示しようとしている行に対して「やること」が実行されます。
(「krewSheet を保存してシートを再描画する時」でも同様に「他のアクションの実行が完了した時」でつながった場合には配慮はされませんのでご注意ください。)
ご不明な点がございましたら、チャットサポートまでお問い合わせください。