簡體   English   中英

使用 CRM REST BUILDER 檢索查找實體的值

[英]Retrieving value of lookup entity using CRM REST BUILDER

我是 CRM Dynamics 的新手。 我有一個要求。

讓我們假設我有 2 個相關的實體: "Cat""Dog" ,我分別有簡單的字段"Cat_Food""Dog_Food" 我在實體貓的表單上有一個實體狗的查找字段,名為"Lookup_Cat" 現在,只要選擇了 Dog 的查找值,我就希望使用 Javascript 使用(選定的查找)Dog 的"Dog_Food"字段值填充 Cat 的"Cat_Food"字段。

現在我在很多網站上看到有人建議使用 CRM REST BUILDER。 我使用過它,但它沒有填充,也沒有給出任何錯誤:這是代碼:

// JavaScript source code

function abc(executionContext)
{
var formContext = executionContext.getFormContext();
var new_dogfood;
var lookup = new Array();
lookup = formContext.getAttribute("Cat_Food").getValue();
if (lookup != null)
{
var name = lookup[0].name;
var id = lookup[0].id;
var entityType = lookup[0].entityType;
}
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/Dog(id)?$select=Dog_Food", false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function() 
{
    if (this.readyState === 4) 
    {
    req.onreadystatechange = null;
    if (this.status === 200) {
    var result = JSON.parse(this.response);
    new_dogfood = result["Dog_Food"];
    }  
    else 
    {
    Xrm.Utility.alertDialog(this.statusText);
    }
}
};
req.send();
var x =  formContext.getAttribute("Cat_Food");
x.setValue(new_dogfood);
}

當您使用 Webpi 檢索數據,尤其是 Lookup Id、Lookup 主名稱和 Lookup Entity 架構名稱時,您必須在請求標頭中包含注釋。

req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");

我將在此處發布一個簡短的帳戶請求示例,我正在嘗試獲取帳戶實體上的主要帳戶(查找)和帳戶上的主要聯系人(查找)。

請求如下

var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/accounts(290FB459-D1F4-E911-A813-000D3A4AA4FD)?$select=name,_parentaccountid_value,_primarycontactid_value", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 200) {
            var result = JSON.parse(this.response);
            var name = result["name"];
            var _parentaccountid_value = result["_parentaccountid_value"];
            var _parentaccountid_value_formatted = result["_parentaccountid_value@OData.Community.Display.V1.FormattedValue"];
            var _parentaccountid_value_lookuplogicalname = result["_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
            var _primarycontactid_value = result["_primarycontactid_value"];
            var _primarycontactid_value_formatted = result["_primarycontactid_value@OData.Community.Display.V1.FormattedValue"];
            var _primarycontactid_value_lookuplogicalname = result["_primarycontactid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};

這是我得到的回應

{
    "@odata.context": "https://abc.xyz.dynamics.com/api/data/v9.1/$metadata#accounts(name,_parentaccountid_value,_primarycontactid_value)/$entity",
    "@odata.etag": "W/\"23463189\"",
    "name": "ABC Account name",
    "_parentaccountid_value@OData.Community.Display.V1.FormattedValue": "Account Reassignment - 3010 NE",
    "_parentaccountid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentaccountid",
    "_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
    "_parentaccountid_value": "75e562f9-06fb-e911-a813-000d3a4aa2c1",
    "_primarycontactid_value": null,
    "accountid": "290fb459-d1f4-e911-a813-000d3a4aa4fd"
}

現在對您來說,上面代碼的有趣之處在於父帳戶的 4 行結果下方

"_parentaccountid_value@OData.Community.Display.V1.FormattedValue": "Account Reassignment - 3010 NE",
        "_parentaccountid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentaccountid",
        "_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
        "_parentaccountid_value": "75e562f9-06fb-e911-a813-000d3a4aa2c1",

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM