【问题标题】:I want to delete multiple CRM records from Dynamics with Xrm.WebApi.online.executeMultiple我想使用 Xrm.WebApi.online.executeMultiple 从 Dynamics 中删除多个 CRM 记录
【发布时间】:2019-09-15 09:03:59
【问题描述】:

多个实体记录必须在一次调用中删除,而不是多个回调,因此尝试使用 Xrm.WebApi.online.executeMultiple 删除记录。但下面编写的代码不起作用。任何帮助将不胜感激。

            for (var i=0; i<Checkbox.length; i++)
            {
                if(Checkbox[i].checked)
                {
                    var id = Checkbox[i].value;// GUID of the record to be deleted
                    Checkbox[i].checked = false;

                    DeleteRequests[i]={};
                    DeleteRequests[i].getMetadata = function(){
                        return{
                            boundParameter: undefined,
                            operationType: 2,
                            operationName: "Delete",
                            parameterTypes: {
                            }
                        }

                    }
                    DeleteRequests[i].etn="cme_entity";
                    DeleteRequests[i].payload=id;
                }
            }
            window.parent.Xrm.WebApi.online.executeMultiple(DeleteRequests).then(
                function (results) {alert("Success");},
                function (error) {alert("Failed");});

收到无法处理此操作的奇怪错误。请联系微软。

【问题讨论】:

    标签: javascript dynamics-crm microsoft-dynamics dynamics-365


    【解决方案1】:

    问题与您构建删除请求对象的方式有关。您需要声明一个函数来设置getMetadata 函数和所需的entityReference 对象。

    我已经测试了下面的解决方案,它可以工作。

    var Sdk = window.Sdk || {};
    
    Sdk.DeleteRequest = function (entityReference) {
        this.entityReference = entityReference;
        this.getMetadata = function () {
            return {
                boundParameter: null,
                parameterTypes: {},
                operationType: 2,
                operationName: "Delete",
            };
        };
    };
    
    for (var i = 0; i < Checkbox.length; i++) {
        if (Checkbox[i].checked) {
            var id = Checkbox[i].value;
            Checkbox[i].checked = false;
    
            DeleteRequests[i] = new Sdk.DeleteRequest({ entityType: "account", id: id }); 
        }
    }
    
    window.parent.Xrm.WebApi.online.executeMultiple(DeleteRequests).then(
        function (results) { alert("Success"); },
        function (error) { alert("Failed"); });
    

    不幸的是,Xrm.WebApi.online.executeXrm.WebApi.online.executeMultiple 的 CRUD 操作没有很好的文档记录。我写了blog post with some code samples

    重要的部分是将Sdk.DeleteRequest 函数声明为window 上的属性,并使用new Sdk.DeleteRequest() 实例化请求对象。我做了一些实验,并确定像以前一样简单地创建一个请求对象,即使使用正确的属性也不起作用。

    希望这会有所帮助! :)

    【讨论】:

    • 嗨瑞恩,感谢您的回复,但我仍然低于错误。发生了错误。再次尝试此操作。如果问题仍然存在,请查看 Microsoft Dynamics 365 社区以获取解决方案或联系您组织的 Microsoft Dynamics 365 管理员。最后,您可以联系 Microsoft 支持。
    • @ApurvYadav 抱歉之前的答案不正确。当我实际测试它时,我遇到了与您相同的错误。所以我用我测试过的有效解决方案更新了我的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多