ステータス変更時のレコード更新について

背景・実現したいこと

・ステータス変更時、レコード内容を更新(PUT)し、画面をリロードしたい。

※リロードしたい理由:レコード詳細画面にボタンを自作して表示しており、

ステータス変更後にそれを表示させるため

(表示条件はステータス+特定のフィールドにデータがあるとき)

※上手くいくときの方が多いが5~10回に1回の頻度で下記のエラーがでます。

 

エラー情報 (開発者ツールのコンソール)

エラー

レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。

 (GAIA_UN03 iUV5p5HU6k2tnsUjGAFB)

 

利用したソースコード(長いため一部抜粋)

(function() {
    "use strict";
    const putRecord = async(id, data) => {
        let body = {
            'app': 335,
            "id": id,
            'record': data   
        };

        await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', body, function(resp) {
        }, function(error) {
            console.log(error);
        }); 
        return;      
    }
    kintone.events.on("app.record.detail.process.proceed", async function(e) {
        if (e.action.value === '解除') {
            const recordId = kintone.app.record.getId();
            let result = window.confirm('本当に解除しますか?')
            if(!result) return false;
            
            let putData = {
                ['状況区分'] : { value: []},
                ['管理区分'] : { value: ''},
                ['解約日'] : { value: ''},
                ['契約終了理由'] : { value: ''}   
            };
            await putRecord(recordId, putData);
            location.reload();
        }
    })
});

ご確認宜しくお願い致します。

ステータス変更をきっかけにREST APIで書き換えようとしてるので、kintone側でステータスの更新の処理とREST APIの処理が衝突しまっているものと思われます。

リファレンスを確認いただきたいのですが、eventオブジェクトをreturnすることで値の書き換えを行うことができます。
また、それによりリロードもいらなくなると思います。

下記あたりのコードが参考になるかと思います。ためしてみてください。

https://developer.cybozu.io/hc/ja/community/posts/115010490506-%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E7%AE%A1%E7%90%86%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%81%8C%E6%89%BF%E8%AA%8D%E6%B8%88%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E9%9A%9B%E3%81%AB%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E5%80%A4%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%81%84

村濱一樹

はじめまして。

質問に関してのご回答ありがとうございます。

リファレンスや過去の質問をきちんと確認できておらず、申し訳ございません。

参考にさせていただきます。

 

【解決いたしました】

record['状況区分'].value = [];
record['管理区分'].value = '';
record['解約日'].value = '';
record['契約終了理由'].value = '';
return e;

今回の件、”eventオブジェクトをreturnする”方法に書き換えてもエラーが出たので、原因を調査したところ

書き換えようとしたフィールドのうち、『状況区分・管理区分』がプロセス管理の”アクションが実行できる条件”に

当てはまっていたためエラーが起きているようでした。

その条件を削除したところ、上手く実装することができました。

村濱一樹様、お忙しいところご対応いただき、本当にありがとうございました。