如何使用保存和路由按钮 Dynamics 365?

How can I work with save and route button Dynamics 365?

我需要在保存和分配(路由)之前验证 Dynamics 365 中是否存在一些注释,问题是获取是异步的,而保存是同步的...我知道现在 Microsft 建议使用异步,所以这是什么可行的解决方案是什么? save可以取消调用,但是save and route按钮怎么取消调用呢?或类似的异步操作?

我试过很多类似的东西,但都不行。

Notes(链接到实体)是否有一些 AddChange?

通常我们会使用 preventDefault() 取消 Save 事件,完成所需的步骤并重新发出 Save 就像

在您的场景中,特殊的 Save & Route 按钮正在实现保存以及 应用路由规则 操作。此序列没有保存模式使用 getSaveMode 进行拦截和重发。 Reference

但您可以使用功能区 workbench 尝试自定义 保存和路由 按钮并调用自定义 Javascript 操作来执行:

  1. 使用 fetchXML/web api
  2. 验证您的 Notes 记录检查
  3. 保存记录
  4. 使用网络调用 ApplyRoutingRule 操作api Read more

不要忘记 Xrm.WebApi 始终是异步的,您必须在成功回调中执行调用链或使用 XMLHttpRequest 同步模式。 Read more

更新:我在 CRM REST Builder 的帮助下编写了这个片段,试试吧。

var parameters = {};
var target = {};
target.incidentid = "00000000-0000-0000-0000-000000000000"; 
target["@odata.type"] = "Microsoft.Dynamics.CRM.incident";
parameters.Target = target;

var applyRoutingRuleRequest = {
    Target: parameters.Target,

    getMetadata: function() {
        return {
            boundParameter: null,
            parameterTypes: {
                "Target": {
                    "typeName": "mscrm.crmbaseentity",
                    "structuralProperty": 5
                }
            },
            operationType: 0,
            operationName: "ApplyRoutingRule"
        };
    }
};

Xrm.WebApi.online.execute(applyRoutingRuleRequest).then(
    function success(result) {
        if (result.ok) {
            //Success - No Return Data - Do Something
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);