新規投稿
フォローする

データの代入

mobile.app.record.detail.process.proceedイベント時に

違うアプリに更新と同時に

フィールドに値を入れたいのですが、

入らないのはなぜでしょうか?

更新がない場合は値は入っています。

データが入らないのは以下の箇所です

event['record']['決裁者コメント_コピー']['value'] = record['決裁者コメント']['value'];
event['record']['決裁者承認日付']['value'] = result;
event['record']['申請番号']['value'] = num;
event['record']['決裁日']['value'] = result;
event['record']['最終決裁者']['value'] = commentname;

 

//レコード取得処理
kintone.api('/k/v1/record', 'GET', params).then(function(resp) {
Present = Number(resp['record']['現在値']['value']) + 1; //現在値+1
num_length = Number(resp['record']['桁数']['value']); // ゼロ埋めする桁数

// 下記のように設定したlength以下の場合書き換える、という風にしないと無限に書き換え処理が走ってしまうので注意
if(String(Present).length < num_length) {
num = zeroPadding(Present, num_length);
}
//申請番号設定処理
num = resp['record']['プレフィックス']['value'] + period + num;

//更新項目
params["record"] = {
"値1":{ "value":Present},
"値2":{"value":period}
};

event['record']['決裁者コメント_コピー']['value'] = record['決裁者コメント']['value'];
event['record']['決裁者承認日付']['value'] = result;
event['record']['申請番号']['value'] = num;
event['record']['決裁日']['value'] = result;
event['record']['最終決裁者']['value'] = commentname;
kintone.mobile.app.record.set(event);


//レコード更新処理
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
console.log(resp);

},function(error) {
// error
console.log(error);
reject(event);
});




},function(error) {
//error:エラーの場合はメッセージを表示する
var errmsg = 'レコード取得時にエラーが発生しました。';
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (error.message !== undefined) {
errmsg += '\n' + error.message;
}
alert(errmsg);
});





//0埋め関数
function zeroPadding(number, length){
return (Array(length).join('0') + number).slice(-length);
}
0

4件のコメント

Avatar
TK

コードを見た感じですと、event を return してないからではないでしょうか?

0
Avatar
shima

TK様

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

},function(error) {
//error:エラーの場合はメッセージを表示する
var errmsg = 'レコード取得時にエラーが発生しました。';
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (error.message !== undefined) {
errmsg += '\n' + error.message;
}
alert(errmsg);
});

の下に

他の処理が記載されており、

そのあとにevent を returnはしているのです。

console.logを入れて確認したところ、値は入っているようなのですが・・・

 

0
Avatar
TK

コード全文見てないので確実には言えませんが、

kintone.apiは非同期処理なのでeventに値をセットする前にreturn eventが走ってるのだと思われます。

下記参考にすれば行けると思いますので試してください。

kintone.events.on("mobile.app.record.detail.process.proceed", function(event) {

 // kintone.apiをreturn することで、結果を待ってeventを返してくれる
  return kintone.api(kintone.api.url("/k/v1/records", true), "GET", get_param).then(function(resp) {

    // ここでevent.recordに値を代入する

    return kintone.api(kintone.api.url("/k/v1/records", true), "PUT", put_param);

  }).then(function(resp2) {

    // ここにPUTの結果がはいってくる

    console.log(resp2);

    // 非同期内でイベントを返すことで↑で代入した値が反映される

    return event;

  }).catch(function(error) {

    console.log(error);

  });

});
0
Avatar
shima

TK様

 

お世話になります。

頂いた内容で問題なく動作いたしました。

(GETの箇所だけreturnをつけました)

 

非同期処理の部分がまだよくわかっていないので勉強したいと思います。

有難うございました。

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