新規投稿
フォローする

ルックアップ再表示によるサブテーブルクリア

お世話になります。

ルックアップ(仕入先カナ)で複数回データ取得を行った際に、前の検索結果がサブテーブルに残ってしまいます。

前回の結果をクリアするにはどのように記述すればよろしいでしょうか?

(() => {
//様向け受発注システム

'use strict';

const events = ['app.record.create.change.code', 'app.record.edit.change.code'];
//仕入先コードが入力されたらイベントが起動する前準備
const newObj = [];
const record = [];
const targetRecordId = [];
const getTablerec = [];


kintone.events.on(events, event => {

const record = event.record;
//recodeにデータが格納される
console.log(record);


const targetAppId = kintone.app.getLookupTargetAppId('商品ID');
//ルックアップフィールドのフィールドコード「商品ID」を指定して、参照先のアプリIDを取得する。

console.log(targetAppId);

const targetRecordId = record.code.value;
console.log(targetRecordId);
const body = {
'app': targetAppId,
'query': '仕入先コード = "' + targetRecordId + '"',
'fields':['商品ID','商品名','JANcode','規格','単位','商品分類','ケース入数','最低発注ケース数',
  '混載条件','文字列__1行__5','納品単価']
};
//情報をGETしたいアプリIDと、アプリにあるレコード番号をセットしてAPIリクエストの準備

if (!targetRecordId) {
record.Table_1.value = [];
return event;
}

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, resp => {
//REST APIリクエストの送信
console.log(resp);
const getTablerec = resp.records;
//案件管理アプリの商品リストの行数を格納している
console.log(getTablerec[0]);
for (let i = 0; i < getTablerec.length; i++) {

const pid = getTablerec[i].商品ID.value;
const pname = getTablerec[i].商品名.value;
const jancode = getTablerec[i].JANcode.value;
const kikaku = getTablerec[i].規格.value;
const tani = getTablerec[i].単位.value;
const bunrui = getTablerec[i].商品分類.value;
const pack = getTablerec[i].ケース入数.value;
const mincase = getTablerec[i].最低発注ケース数.value;
const konsai = getTablerec[i].混載条件.value;
const konother = getTablerec[i].文字列__1行__5.value;
const price = getTablerec[i].納品単価.value;

newObj.push({
value: {

行番号: { type: "NUMBER", value: '0' },
商品ID: { type: "SINGLE_LINE_TEXT", value: pid, lookup: true },
商品名: { type: "SINGLE_LINE_TEXT", value: pname },
JANコード: { type: "SINGLE_LINE_TEXT", value: jancode },
規格: { type: "SINGLE_LINE_TEXT", value: kikaku },
数量: { type: "NUMBER", value: '0' },
単位: { type: "DROP_DOWN", value: tani },
商品分類: { type: "SINGLE_LINE_TEXT", value: bunrui },
ケースの入数: { type: "NUMBER", value: pack },
最低発注数: { type: "NUMBER", value: mincase },
混載条件: { type: "DROP_DOWN", value: konsai },
混載条件_その他: { type: "SINGLE_LINE_TEXT", value: konother },
納品価格: { type: "NUMBER", value: price },
}
});
}
console.log(newObj);
event.record.Table_1.value = newObj;
kintone.app.record.set(event);
});
});

kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], event => {
const count = event.record.Table_1.value.length;
for (var i = 0; i < count; i++) {
event.record.Table_1.value[i].value.行番号.value = i + 1;
}
//上記は行番号を挿入する処理
return event;
});
})();
0

2件のコメント

Avatar
住田 知基

テーブルに登録する行を保持している配列変数の初期化処理:

const newObj = [];

がルックアップ取得時イベントの外側に記述されています。

ルックアップを2回取得したとき、実行されるのはイベントの内側の処理のみなので、1回目のルックアップ時にpushした内容が初期化されずそのまま残っている状態になっています。

イベントの内側に初期化処理を書くか、pushする前に中身を空にする処理を追加する必要があると思います。

1
Avatar
村井 芳久

住田様

ありがとうございます。

正常動作確認できました!

0
サインインしてコメントを残してください。