Dynamics 365 CE - 如何在Javascript中使用WebApi取消一个案例?

问题描述 投票:0回答:1

我目前使用2011年的端点SOAP调用,但我想升级到较新版本的Web Api。我可以 "解决 "一个案例,但不能从JavaScript中 "取消 "它。

我目前的2011年soap调用代码是:

 // create the SetState request
        var request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
        request += "<s:Body>";
        request += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
        request += "<request i:type=\"b:SetStateRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
        request += "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
        request += "<a:KeyValuePairOfstringanyType>";
        request += "<c:key>EntityMoniker</c:key>";
        request += "<c:value i:type=\"a:EntityReference\">";
        request += "<a:Id>" + formContext.data.entity.getId() + "</a:Id>";
        request += "<a:LogicalName>incident</a:LogicalName>";
        request += "<a:Name i:nil=\"true\" />";
        request += "</c:value>";
        request += "</a:KeyValuePairOfstringanyType>";
        request += "<a:KeyValuePairOfstringanyType>";
        request += "<c:key>State</c:key>";
        request += "<c:value i:type=\"a:OptionSetValue\">";
        request += "<a:Value>" + selectedStatus + "</a:Value>";
        request += "</c:value>";
        request += "</a:KeyValuePairOfstringanyType>";
        request += "<a:KeyValuePairOfstringanyType>";
        request += "<c:key>Status</c:key>";
        request += "<c:value i:type=\"a:OptionSetValue\">";
        request += "<a:Value>" + selectedStatusReason + "</a:Value>";
        request += "</c:value>";
        request += "</a:KeyValuePairOfstringanyType>";
        request += "</a:Parameters>";
        request += "<a:RequestId i:nil=\"true\" />";
        request += "<a:RequestName>SetState</a:RequestName>";
        request += "</request>";
        request += "</Execute>";
        request += "</s:Body>";
        request += "</s:Envelope>";

        //send set state request
        $.ajax({
            type: "POST",
            async: false,
            contentType: "text/xml; charset=utf-8",
            datatype: "xml",
            url: Xrm.Utility.getGlobalContext().getClientUrl() + "/XRMServices/2011/Organization.svc/web",
            data: request,
            beforeSend: function (xmlHttpRequest) {
                xmlHttpRequest.setRequestHeader("Accept", "application/xml, text/xml, */*");
                xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
            },
            success: function () {
                Alert.hide();
                formContext.ui.close();
            },
            error: function (xmlHttpRequest, textStatus, errorThrown) {
                Alert.hide();
                Xrm.Navigation.openErrorDialog({ errorCode: "Error in Cancel Ticket request", details: errorThrown }).then(
                    function () {},
                    function (error) {
                        console.log(error);
                    });
                console.log(errorThrown);
            }
        });
dynamics-crm microsoft-dynamics dynamics-crm-365 dynamics-crm-webapi dynamics-crm-365-v9
1个回答
2
投票

您可以使用这个代码段来取消"..."。incident 使用web api。

var entity = {};
entity.statecode = 2;  //Cancelled
entity.statuscode = 6; //Cancelled

Xrm.WebApi.online.updateRecord("incident", "1041db2d-196e-ea11-a811-000d3a5a1bf8", entity).then(
    function success(result) {
        //do something when request succeed
    },
    function(error) {
        //do something when request failed
    }
);
© www.soinside.com 2019 - 2024. All rights reserved.