在Dynamics CRM中使用JavaScript调用全局自定义操作

时间:2017-10-25 08:29:19

标签: javascript dynamics-crm crm

我在使用Dynamics CRM中的JavaScript调用全局自定义操作时遇到问题。

In CRM I created this global action that takes an in parameter and returns an out parameter。我已经确认该动作已激活且有效。当我尝试使用JavaScript调用它时出现问题。

我的JavaScript代码如下:

callCustomAction: function (actionName, actionParameters) {
    var result = null;

    var req = new XMLHttpRequest();
    req.open("POST", encodeURI(Xrm.Page.context.getClientUrl() + "/api/data/v8.2/" + actionName), false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4) {
            req.onreadystatechange = null;

            if (this.status == 200) {
                result = JSON.parse(this.response);
            } else {
                var error = JSON.parse(this.response).error;
                alert(error.message);
            }
        }
    };
    req.send(window.JSON.stringify(actionParameters));

    return result;
}

现在,对我而言,这看起来是正确的,但我遇到了一个URL的问题,目前这个问题无处可去。在任何地方,我看到全局操作的URL只是组织URL,后跟" /api/data/v8.2 /"和我的行动的名称,但对我来说,它没有工作,我无法弄清楚为什么。

解决 问题是使用EntityReferences和字符串的混合作为输出参数,这使得我的操作不会显示在元数据下

1 个答案:

答案 0 :(得分:0)

使用Web API调用具有关联输出参数的全局操作。对于没有输出参数的操作,情况并非如此。

这是因为有时状态代码为200,有时会有所不同。我们注意到了这个错误并且发现只有具有输出参数的操作才会发生。此外,我们注意到这种情况在某些时候发生,并且不经常发生,因为有时您会得到输出但有时不会。

作为一种解决方法,您需要使用传统的SOAP查询并执行工作流,然后解析响应。

希望MS很快解决这个问题