none
レコードを保存した後に処理を実行する方法 RRS feed

  • 質問

  • こんにちは。

    Dynamics CRM 2016 (設置型) の環境で、レコードを保存した後、項目の一部を引き継いで新規作成画面を表示させたいと考えているのですが、以下のようにコーディングしたところ、保存処理が最後に動いてしまい「変更は保存されていません」というダイアログが表示されてしまいます。

    function SaveAndNewRecord() {
        Xrm.Page.data.entity.save();
        // 一部の項目を引き継いで新規作成画面を表示
        var parameters = {};
        parameters["new_pjstatus"] = Xrm.Page.getAttribute("new_pjstatus").getValue();
        Xrm.Utility.openEntityForm("new_hikitugiEntity", null, parameters);
    }

    ダイアログを無視して [OK] をクリックすれば、新規作成画面が開き、保存後の値が正しく引き継がれるのですが、ダイアログが出てしまう部分にどうしても違和感があります。

    ・保存時に表示されるダイアログをこの処理に限っては表示しないということはできますか?

    ・保存→新規作成画面を表示 という処理順で実行できるコードの書き方をご教示いただけないでしょうか?

    2018年6月8日 0:33

回答

  • 本件、自己解決しましたので共有いたします。

    以下の様な記述方法で実装可能でした。

    function SaveAndNewRecord() {
        Xrm.Page.data.save().then(
            function() {
                // 一部の項目を引き継いで新規作成画面を表示
                var parameters = {};
                parameters["new_pjstatus"] = Xrm.Page.getAttribute("new_pjstatus").getValue();
                Xrm.Utility.openEntityForm("new_hikitugiEntity", null, parameters);
            });
    }

    2018年6月12日 7:08