何を実現したいのかを書きましょう
イベント間のデータの受け渡しにつて教えてください。
「レコード追加画面表示後」のイベントで管理番号フィールドに自動採番できるようプログラムを作ってましたが
不具合が発生した為、「レコード追加画面で保存する時」のイベントで自動採番する様に変更したいです。
自動採番の条件としては
①レコードを追加するを押した時**”新規採番”**
②レコードを再利用するを押した時**”新規採番”**
③アクションボタン「差替え」を押した時**”採番しない”**
としてます。
アクションボタンはレコード内容全コピーとし、管理番号も引き継ぎます。
レコード再利用するを押した時はevent.reuseでtrueになるのでその値で判断させて新規採番させようと思ってます。
但し、「レコード追加画面で保存する時」のイベントではreuseに値が入らないので、「レコード追加画面表示後」イベントからreuseの情報を「レコード追加画面で保存する時」イベントで実行される関数に引き渡してreuseの値を使おうと思ってプログラムを書きましたが
kintoneで実行して、保存ボタンを押した時にプログラムが暴走しています。
konsole.logで確認すると、採番までは出来ているように思いますが
保存の時にkintoneが固まって動かず保存できません。
「レコード追加画面で保存する時」のイベント
kintone.events.on(hozonEv,managementno(event,reuse,kanriNo));
の場所やデータの受け渡し方法が
悪い気もするのですが、原因が分からなので
どなたか、教えてください。
こういった仕様にせずに、別の方法もあるかと思いますが
イベント間のデータの受け渡し方法をどのようにやるのか?
こういったプログラムの組立方は無理なのかどうか?
を知りたいという事もあり、投稿しました。
データの受け渡しやfunction(event)を使っているものの
このeventも消すとどうなるかとかもいまいち
理解できておりません。
すみませんが、よろしくお願いします。
発生した問題やエラーメッセージを具体的に書きましょう
保存するを押すとコンソールに
Uncaught TypeError: a is not a function
が表示されます。
実行したコードをコピー&ペーストしましょう
//管理番号を自移動採番
//
//getno2-1-2.js
(() => {
'use strict';
const hozonEv = 'app.record.create.submit'; //保存時のイベント
// const kanriNo = 'app.record.create.show';
function managementno(event,reuse,kanriNo){
// const record = event.record;
// let kanriNo = record['管理番号'].value;
console.log('保存イベント管理番号'+kanriNo);
console.log('保存イベントreuse:'+reuse);
debugger;
//取得してくるデータ内容を指定 顧客管理番号を降順で一番大きい数字を1件取得する。(最大顧客番号の取得)
//クエリで取得データの指定
const body = {
app: event.appId,
fields:['管理番号'], //欲しいデーターの場所を指定
query:'order by 管理番号 desc limit 1' //「order by 管理番号 desc」で並び順を変える
};
//レコードから管理番号を取得 複数レコードを取得する時の宛先「/k~records」
return kintone.api(kintone.api.url('/k/v1/records',true),'GET',body).then(function(resp){
console.log(`resp:${resp.records[0].管理番号.value}`);
debugger;
if(resp.records.length ===0) {
event.record['管理番号']['value'] = 1; //レコード1個目の時初期値設定
} else if ((kanriNo === undefined )||(kanriNo !== undefined && reuse === true)){
console.log('新番号取得');
const newUid = Number(resp.records[0].管理番号.value) + 1;
event.record['管理番号']['value'] = newUid;
console.log('新番号'+newUid);
debugger;
}else{
console.log('差替え');
}
return event;
}).catch(function(error){
console.log(error); //error
});
}
kintone.events.on('app.record.create.show', function(event) { //追加画面イベント
const record = event.record;
let reuse = event.reuse; //レコード再利用の時reuse=true
let kanriNo = record['管理番号'].value;
console.log(record);
console.log('追加画面reuse'+reuse);
console.log('追加画面管理番号'+kanriNo);
kintone.events.on(hozonEv,managementno(event,reuse,kanriNo)); //保存時のイベント
return event;
});
})();