Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用CRM REST BUILDER检索查找实体的值_Javascript_C#_.net_Dynamics Crm_Dynamics 365 - Fatal编程技术网

Javascript 使用CRM REST BUILDER检索查找实体的值

Javascript 使用CRM REST BUILDER检索查找实体的值,javascript,c#,.net,dynamics-crm,dynamics-365,Javascript,C#,.net,Dynamics Crm,Dynamics 365,我是CRM Dynamics的新手。我有一个要求 让我们假设我有两个相关的实体:“Cat”和“Dog”,并且我在它们上分别有简单的字段“Cat\u Food”和“Dog\u Food”。我在实体猫的表单上有一个实体狗的查找字段,名为“lookup\u Cat”。现在,只要选择了Dog的查找值,我就希望使用Javascript将Cat的“Cat\u Food”字段填充为(选定的查找)Dog的“Dog\u Food”字段的值 现在,我在许多网站上都看到有人建议使用CRM REST BUILDER。我

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

让我们假设我有两个相关的实体:
“Cat”
“Dog”
,并且我在它们上分别有简单的字段
“Cat\u Food”
“Dog\u Food”
。我在实体猫的表单上有一个实体狗的查找字段,名为
“lookup\u Cat”
。现在,只要选择了Dog的查找值,我就希望使用Javascript将Cat的
“Cat\u Food”
字段填充为(选定的查找)Dog的
“Dog\u 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检索数据,尤其是查找Id、查找主名称和查找实体架构名称时,必须在请求头中包含注释

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"
}
现在,对于您来说,上面的代码中的Intrest是什么,下面是父帐户的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",

你调试过看发生了什么吗?是的。如果(this.status==200)它不会进入内部,那么“其他”部分在警报中说了什么?