繰り返しコンテナの参照連動
最終更新日: 2020年3月14日
R8 | R9
見積書モデルを用意しました。これを参照連動の元とします。
この見積書モデルを参照する、注文書モデルを用意しました。見積書を選択しています。
紐づく(見積書)モデルが確定されると、繰り返しコンテナ全体が参照連動されます。
この動作イメージを図4に示します。
4つのモデルを定義しています。「顧客」と「商品」はマスタデータとして扱います。(説明を省略します。)
見積書モデルの定義を示します。「明細」は繰り返しコンテナになっています。
注文書モデルの定義を示します。ここで「明細」モデルに含まれる「商品名」「価格」を "参照連動" としています。
繰り返しコンテナ内の項目「商品名」は、見積書項目が確定したら(見積書モデルに含まれる)商品名項目を参照連動するように設定します。
同じように「価格」も参照連動の設定を行います。
本機能を利用する場合、繰り返しコンテナ内に少なくとも一つのリストボックス/ラジオボタン/チェックボックス項目を含めるか、または連動元のモデルを選択する(モデル参照)項目に「この項目が変更されたら画面リロードする」を設定してください。画面再描画によって参照連動を行わせる必要があるためです。
今回のケースでは、繰り返しコンテナ内にリストボックス項目が含まれるため、本ルールを満たしています。
参照連動項目を自モデル保存とすることで、参照後に値を変更して保存することもできます。
書き換えた値は、参照元とは別個に管理されます。
図3のアプリケーションを、参照連動自モデル保存に変更した例を示します。
値を変更して保存することができます。その後、紐づく見積書モデル側の明細を変更しても、この注文書モデルには影響はありません。
自モデル保存する項目は「値をデータベースに保存する」を有効にします。
また、「読込専用」の設定を "解除" します。
参照連動の保存を行う場合、次のルールが適用されます。
参照元となるモデルの繰り返しコンテナに対して、条件式を指定して(参照連動するデータを)絞込むことができます。
価格が100(円)より大きい場合のみ参照連動する、という条件を付与した例を示します。
見積書には3件の明細を含めています。
注文書の新規登録画面では2件の明細が参照連動されました。
「コンテナの参照連動時の表示条件」に式を記述します。この式が
ここでは式を次のように設定しています。
表示条件の式に繰り返しコンテナ外にあるモデル参照項目が含まれていた場合、その項目の値が変更されたタイミングで画面再描画が行われると、変更された値を反映した参照連動の絞り込みが行われます。
繰り返しコンテナ meisai の "コンテナの参照連動時の表示条件" に次の式を設定したとします。
ここではコンテナ内項目 meisai/seibetsu_no の ID部と、コンテナ外項目 seibetsu_list の ID 部が一致するもので絞り込むとしており、両方ともモデル参照項目です。また seibetsu_list 項目は "値変更時に画面を再描画する" を有効としています。
このとき Wagby は式を解析し、seibetsu_list 項目が変更(かつ再描画)されたときも繰り返しコンテナ meisai の参照連動を行うようになります。そのため、コンテナ外項目 seibetsu_list の選択肢を変更すると、繰り返しコンテナ参照連動の内容が書き換わるという動きを実現できます。
画面再描画の設定ルールを満たしているかどうかをご確認ください。
次の例をもとに説明します。
繰り返しコンテナの参照連動、かつ、繰り返しコンテナ内に自モデル保存の項目が存在する場合は、この処理は仕様となります。子モデルで一度参照連動した後に親モデルで添付ファイルが追加されても、子モデルのデータには反映されません。
子モデルの登録時のスクリプトで対応する方法があります。
スクリプトでは親の繰り返しコンテナデータを取得し、子の繰り返しコンテナデータとして転記させます。このとき子モデルに既存のコンテナデータが存在していても、これを無視して上書きするようにする、というものです。
例
定義方法
画面再描画の設定
参照連動を自モデル保存する
例
定義方法
仕様・制約
条件によって参照連動するデータを絞り込む
例
定義方法
true
となった行のみが参照連動されます。
${rcont/rprice}>100
仕様
式による連動8.3.0
例
${meisai/seibetsu_no#id}==${seibetsu_list#id}
トラブルシューティング
繰り返しコンテナの参照連動が動作しない
先頭の行だけが参照連動されない
想定するモデル構成
処理の流れ
対策