【问题标题】:Changing lead owner via Dynamics Web API通过 Dynamics Web API 更改潜在客户所有者
【发布时间】:2017-03-01 15:22:16
【问题描述】:

我正在按照https://msdn.microsoft.com/en-us/library/mt607875.aspx的示例工作

我可以使用 PATCH 更新其他单值导航属性,即

PATCH [DYNAMICS_URL]/api/data/v8.1.0.538/leads(355c33b0-88fe-e611-80f1-c4346bad60a8)

{
  "campaignid@odata.bind":"[DYNAMICS_URL]/api/data/v8.1.0.538/campaigns(fdfa106a-5dd1-e511-80df-3863bb349bd8)",
}

但是,尝试运行相同的更改所有者 ID

PATCH [DYNAMICS_URL]/api/data/v8.1.0.538/leads(355c33b0-88fe-e611-80f1-c4346bad60a8)

{
  "ownerid@odata.bind":"[DYNAMICS_URL]/api/data/v8.1.0.538/systemusers(4bf3d2d8-f2ec-e511-80d5-5065f38b15d1)"
}

给出 500 内部服务器错误

"message": "email With Id = 1a70458b-92fe-e611-80f1-c4346bad60a8 Does Not Exist"

发生了什么事?通过 CRM 网络应用分配潜在客户所有者可以正常工作。

此外,尝试更新owninguser 的方式与提供204 No content 相同,但似乎没有更新任何内容。

【问题讨论】:

    标签: odata dynamics-crm


    【解决方案1】:

    更改记录的所有者不是更新操作。这是分配操作,遗憾的是无法使用 REST 请求分配记录。但是您可以使用 SOAP 来执行此操作:

    function AssignRecord(Assignee, Target, entityName) {
    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\"";
    request += " xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
    request += "<request i:type=\"b:AssignRequest\"";
    request += " xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\"";
    request += " 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>Target</c:key>";
    request += "<c:value i:type=\"a:EntityReference\">";
    request += "<a:Id>" + Target + "</a:Id>";
    request += "<a:LogicalName>" + entityName + "</a:LogicalName>";
    request += "<a:Name i:nil=\"true\" />";
    request += "</c:value>";
    request += "</a:KeyValuePairOfstringanyType>";
    request += "<a:KeyValuePairOfstringanyType>";
    request += "<c:key>Assignee</c:key>";
    request += "<c:value i:type=\"a:EntityReference\">";
    request += "<a:Id>" + Assignee + "</a:Id>";
    request += "<a:LogicalName>systemuser</a:LogicalName>";
    request += "<a:Name i:nil=\"true\" />";
    request += "</c:value>";
    request += "</a:KeyValuePairOfstringanyType>";
    request += "</a:Parameters>";
    request += "<a:RequestId i:nil=\"true\" />";
    request += "<a:RequestName>Assign</a:RequestName>";
    request += "</request>";
    request += "</Execute>";
    request += "</s:Body>";
    request += "</s:Envelope>";
    // Get server URL
    
    var serverUrl = Xrm.Page.context.getServerUrl();
    
    var req = new XMLHttpRequest();
    
    req.open("POST", serverUrl, true)
    
    // Responses will return XML. It isn’t possible to return JSON.
    
    req.setRequestHeader("Accept", "application/xml, text/xml, */*");
    
    req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    
    req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute&#8221");
    
    req.onreadystatechange = function () { if (req.readyState == 4) {
    
        if (req.status === 200) {
    
            alert("Success !!!");
    
        }
    
        else {
    
            alert("Error – " + req.responseXML);
    
        }
    
    }
    
    };
    req.send(request); }
    

    【讨论】:

      猜你喜欢
      • 2020-10-06
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多