仕様の要求:
①画面表示する時に、他のアプリのフィールドを合計して、データを保存する
②画面修正の時にも、他のアプリのフィールドを合計して、データを画面フィールドに入れる
①②のソースは図2に参考してください。
問題:
画面が表示する時に、図1の②のボタンを押して、修正が画面になります(③)、その時に 保存ボタン(④)を押したら、下記のエラーが出ます。
エラー:レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。(GAIA_UN03 ALSAuid77knzwNX4Uqnz)
図1
図2
pankou様
以前のトピックスでも似たような案件がありましたが、
var ev=kintone.app.record.get();
ev["record"][setting]["value"]=tempvalue;
kintone.app.record.set(ev);
が原因だと思われます。
milkyway0307さんご返事、有難うございます、似たような案件が分かります、自分が投稿したものです。
この案件と今回はちょっと違います、以前の案件はEventで保存できます、今回は保存イベントはrestapiの中ですので、** ききました。**
pankou様
以前の場合と、エラーの原因自体はあまり変わらないと思います。app.record.edit.show イベントの中でAPIを使い、その中で
var ev=kintone.app.record.get();
ev["record"][setting]["value"]=tempvalue;
kintone.app.record.set(ev);
として編集しようとしているレコードを裏で書き換えれば、同じエラーが起きるはずです。
一方で、以前の案件で return event で保存できたのに、今回は保存できないから kintone.app.record.set でやろうとなさっているのではないでしょうか?
だとすれば、queryotherapl という関数が終わる前に return event になってしまっている可能性が高いですね。この関数をPromise化して、変更処理が終わってから return event されるようにしたほうがよろしいかと思います。
milkyway0307さん
ご返事、有難うございます、試してみます~。ちなみに、聞きたい事があります、キントンのAPIは同期で実行できますか?
jqueryの async: falseみたいな設定出来ますか?
pankou様
jQueryでasync:falseとしてAPIを使ったり、xmlhttprequestで同期通信をすることはできますが、kintone.apiなどはすべて非同期です。
とはいえ、大抵のことはPromiseで使えば同期通信を使わないでもできると思いますよ
milkyway0307さん、ご返事、有難うございます。アイディア、助かりました。
system
(system)
クローズされました:
8
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。