app.record.edit.changeイベントのエラーについて

ドロップダウンの値によってラジオボタンの値が連動し、ラジオボタンの値によって文字結合が行われるようにjavascriptを書いているのですが、下記コードをご覧頂くと分かるようにレコード作成時と編集画面で"ドロップダウン_0"の値が変更になった時のみ更新が行われるようにしたいと思っています。

しかし、

'app.record.edit.change.ドロップダウン_0'

のイベントを足すと

Uncaught Error: app.record.edit.change.ドロップダウン_0 is not allowed to return “Thenable” object.

というエラーになってしまいます。

javascript初心者のため何が原因なのかわかりません。

どなたか改善策をご教授いただけませんでしょうか。

 

下記が行いたいjavascriptになります。

(function() {
"use strict";
kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'], function(event){
return kintone.api(kintone.api.url('/k/v1/records'), 'GET', {
app: kintone.app.getId(),
fields: '正社員自動採番'
}).then(function(resp){
event.record.正社員自動採番.value = (resp.records.length === 0) ? '001' : ('000' + (Number(resp.records[0].正社員自動採番.value) + 1)).slice( -3 );
return event;
});
});
})();
 // インターン用の自動採番
(function() {
"use strict";
kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'], function(event){
return kintone.api(kintone.api.url('/k/v1/records'), 'GET', {
app: kintone.app.getId(),
fields: 'インターン自動採番'
}).then(function(resp){
event.record.インターン自動採番.value = (resp.records.length === 0) ? '001' : ('000' + (Number(resp.records[0].インターン自動採番.value) + 1)).slice( -3 );
return event;
});
});
})();

 // アルバイト用の自動採番
(function() {
"use strict";
kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'], function(event){
return kintone.api(kintone.api.url('/k/v1/records'), 'GET', {
app: kintone.app.getId(),
fields: 'アルバイト自動採番'
}).then(function(resp){
event.record.アルバイト自動採番.value = (resp.records.length === 0) ? '001' : ('000' + (Number(resp.records[0].アルバイト自動採番.value) + 1)).slice( -3 );
return event;
});
});
})();

 // 業務委託用の自動採番
(function() {
"use strict";
kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'], function(event){
return kintone.api(kintone.api.url('/k/v1/records'), 'GET', {
app: kintone.app.getId(),
fields: '業務委託自動採番'
}).then(function(resp){
event.record.業務委託自動採番.value = (resp.records.length === 0) ? '001' : ('000' + (Number(resp.records[0].業務委託自動採番.value) + 1)).slice( -3 );
return event;
});
});
})();

 // 関連会社社員用の自動採番
(function() {
"use strict";
kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'], function(event){
return kintone.api(kintone.api.url('/k/v1/records'), 'GET', {
app: kintone.app.getId(),
fields: 'Match自動採番'
}).then(function(resp){
event.record.Match自動採番.value = (resp.records.length === 0) ? '001' : ('000' + (Number(resp.records[0].その他自動採番.value) + 1)).slice( -3 );
return event;
});
});
})();

(function() {
 "use strict";
  //ドロップダウンとラジオボタンAを連動させる
 kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'], function(event) {
  var record = event.record;
  var dropA = record.ドロップダウン_0.value;
  //インターンの場合のドロップダウンからラジオボタンAへの連動
  if (dropA === 'インターン') {
   record.ラジオボタンA.value = 'インターン';
   
   
  //アルバイトの場合のドロップダウンからラジオボタンAへの連動
  } else if (dropA === 'アルバイト'){
   record.ラジオボタンA.value = 'アルバイト';
   
   
   //派遣社員・業務委託の場合のドロップダウンからラジオボタンAへの連動
  } else if (dropA === '派遣社員'){
   record.ラジオボタンA.value = '業務委託・派遣社員';
  } else if (dropA === '業務委託'){
   record.ラジオボタンA.value = '業務委託・派遣社員';
   
   
  //正社員・契約社員の場合のドロップダウンからラジオボタンAへの連動
  } else if (dropA === '取締役'){
   record.ラジオボタンA.value = '正社員・契約社員';
  } else if (dropA === '執行役員'){
   record.ラジオボタンA.value = '正社員・契約社員';
  } else if (dropA === '正社員'){
   record.ラジオボタンA.value = '正社員・契約社員';
  } else if (dropA === '契約社員'){
   record.ラジオボタンA.value = '正社員・契約社員';
   
   
  //その他社員の場合のドロップダウンからラジオボタンAへの連動
  } else if (dropA === 'その他'){
   record.ラジオボタンA.value = 'その他';
   
  return event;
  }
 });
}());

//社員番号作成
(function() {
 "use strict";
 
 kintone.events.on(['app.record.create.submit','app.record.edit.change.ドロップダウン_0'],function(event){
 var record = event.record;
 var radioA = record['ラジオボタンA'].value;
 
//正社員の場合
  if (radioA === '正社員・契約社員') {
var a = parseInt(10000, 10);
var b = parseInt(165, 10);
var c = parseInt(record.正社員自動採番.value, 10);
var total10 = a+b+c;
record.employee_number.value = total10;
 //その他の自動採番を消去する
record.インターン自動採番.value = "";
record.アルバイト自動採番.value = "";
record.業務委託自動採番.value = "";
record.Match自動採番.value = "";

// インターンの場合
  }else if (radioA === 'インターン'){
  var d = parseInt(50000, 10);
  var e = parseInt(94, 10);
var f = parseInt(record.インターン自動採番.value, 10);
var total50 = d+e+f;
record.employee_number.value = total50;

 //その他の自動採番を消去する
record.正社員自動採番.value = "";
record.アルバイト自動採番.value = "";
record.業務委託自動採番.value = "";
record.その他自動採番.value = "";

//アルバイト・パートタイマーの場合
  }else if (radioA === 'アルバイト'){
  var g = parseInt(60000, 10);
  var h = parseInt(48, 10);
var i = parseInt(record.アルバイト自動採番.value, 10);
var total60 = g+h+i;
record.employee_number.value = total60;

 //その他の自動採番を消去する
record.正社員自動採番.value = "";
record.インターン自動採番.value = "";
record.業務委託自動採番.value = "";
record.その他自動採番.value = "";

//業務委託・派遣社員の場合
  }else if (radioA === '業務委託・派遣社員'){
  var j = parseInt(80000, 10);
  var k = parseInt(43, 10);
var l = parseInt(record.業務委託自動採番.value, 10);
var total80 = j+k+l;
record.employee_number.value = total80;

 //その他の自動採番を消去する
record.正社員自動採番.value = "";
record.インターン自動採番.value = "";
record.アルバイト自動採番.value = "";
record.その他自動採番.value = "";

//Matchなど関連会社社員の場合
  }else if (radioA === 'Match'){
  var m = parseInt(90000, 10);
  var n = parseInt(2, 10);
var o = parseInt(record.その他自動採番.value, 10);
var total90 = m+n+o;
record.employee_number.value = total90;

 //その他の自動採番を消去する
record.正社員自動採番.value = "";
record.インターン自動採番.value = "";
record.アルバイト自動採番.value = "";
record.業務委託自動採番.value = "";
  }
  return event;
 });
}());

ken.ikezaki さん

エラーの原因は、‘app.record.edit.change.ドロップダウン_0’ イベントが Promise 対応していないためです。

なおドロップダウン_0 変更時に、採番処理を行っても意味がありません。

※複数画面で編集画面を開いて「ドロップダウン_0」を変更すると同じ番号になります。

他に気になった点を上げてみます。

・kintone api の limit オプションを指定していないので、いつも最大 100 レコード取得している。

・正社員、インターン、アルバイト、業務委託、Match で、それぞれレコードを取得しているが、取得条件が無いため同じレコードを取得している。

仕様が不明なので、よくわかりませんが採番対象の番号を持つレコードのみを取得するだけでよさそうに思えます。

・fields オプションの指定が、文字列の配列ではなく単なる文字列になっている。

 

rez0220さん

ご回答ありがとうございます。

やはりそういうことが原因なのですね,。

 

そしてご指摘もありがとうございました。

javasript初心者のため拙いところが多々あるかと思います。

現状、雇用形態によって社員番号が変わる仕組みになっておりまして、作成時に関してはこのjavascriptでも問題なく登録ができているのですが

社員の中には初期登録時に登録された雇用形態から途中で変更になるものもいるため、雇用形態のfieldを変更した際にも再度新規登録と同じ工程ができればと考えております。

 

やりたいこととしましては、

社員番号に登録されている各雇用形態の社員番号の末尾から新しい社員番号ができればと考えております。

例えば,

正社員が入社する際もしくは雇用形態が正社員に変更になった場合は、

10165(正社員・契約社員)が末尾

から自動採番し社員番号に登録されるようなことが行いたいです。

 

 

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。