取得した関連レコード結果をレコード編集追加画面で動的にテーブルにデータをセットする方法

3つのマスタアプリが存在し、マスタアプリを参照しながら、記録を入力してもらうアプリを作成しようと考えています。

記録を入力するアプリでやりたいことは、
まず、ルックアップで検索した結果が関連レコード一覧に表示し、
あらかじめボタンか何かを配置させ、そのボタンがクリックされたら、
動的にテーブル内のルックアップ項目に農場IDが初期セットされるという流れです。
ボタンの配置までは問題なさそうですが、取得した関連レコード結果を動的にテーブルにデータをセットする方法がわかりません。
ご教授願えませんか?
他の方法での提案でも構いません。

<アプリ構成>
アプリA:作業グループ情報リスト(作業グループID,作業グループ名,農場IDなど)
アプリB:農場作業グループリスト(農場ID,作業グループIDなど)
アプリC:農場リスト(農場ID、農場名など)
アプリD:記録アプリ
※既存のPCアプリのテーブル情報連携するための構成です。インポートの手間を減らすため上記構成はこのままにしたいです。

<記録アプリ(アプリD)>
以下項目を配置しています。
①ルックアップを配置
アプリAから作業グループ名を検索 (取得した作業グループ名、作業グループIDを文字列(1行)にコピー)
②関連レコード一覧を配置
ルックアップの検索結果(作業グループID)より、アプリBの作業グループIDと一致する農場IDをリスト表示
③テーブルを配置
1)ルックアップを配置
アプリCから農場IDコピー
※セットする農場IDは、②の関連レコード一覧に表示された農場IDにしたい
2)文字列(1行)を配置
1)のルックアップ情報の結果(農場名)をコピー

 

Foodagriの智さん

 

新規登録・編集画面で、関連レコードで参照される(グループIDが一致する)レコード全てであれば、kintone.api()で相当レコードないし農場IDを(グループIDをkeyにして)取得し、kintone.app.record.get/setでサブテーブルにセットするという流れになると思います。

なお、新規登録・編集画面でやる時の注意としては、こちらにあるように行追加時にタイプを指定しつつ、サブテーブル中の全てのフィールドを指定する必要があります。

Ryu Yamashitaさん

さっそくのご回答ありがとうございます。
教えていたいただいたKintone.app.recordのget/setを使って、ボタンイベントが発生したらサブテーブルに情報をセットするということができました。

あとは、サブテーブルにセットしたルックアップをさらに更新できるようにしたいので以下を参考に進めてみます。
https://cybozudev.zendesk.com/hc/ja/articles/204537310 

解決されたようで良かったです。マスタの更新に伴う更新はサブテーブルながらルックアップフィールドだけの更新でよくなるので、多少は楽できそうですね。

追加の質問よろしいでしょうか?
サブテーブルに値を「kintone.app.record.set」した後、テーブル内の値を一括削除して新規にセットしなおしたい場合、どのように行えばよいでしょうか?

テーブルのclearメソッドでできるかと思いましたが、取得しなおした情報分サブテーブルに値がセットされ続けてしまいます。

ソースは以下のように記載しています。

 var record = kintone.app.record.get();
 
 record.record[‘Table’][‘value’].clear;
 kintone.app.record.set(record);
 
 for(i=0; i < IDLlist.length ; i+=1){
  newRow = {
            value: {
             農場ID: {
                    type: ‘SINGLE_LINE_TEXT’,
                 value: IDLlist[i]
            },
                農場名: {
                    type: ‘SINGLE_LINE_TEXT’,
                 value: ‘’
            }
        }
     };
  record.record[‘Table’][‘value’].push(newRow);
 }
 
 kintone.app.record.set(record);

record.record['Table']['value'].clear;

のところを

 record.record['Table']['value'] = [];

にする内容で要件満たせそうかと思いますが、いかがでしょうか。

ありがとうございます。無事に実現できました。

空文字をセットするのですね。
https://cybozudev.zendesk.com/hc/ja/articles/202166330 
確認していましたが、理解不足でした。。

1 Like

リンク最下部ですね。解決されたようで、良かったです。