Javascript 使用CRM REST BUILDER检索查找实体的值
我是CRM Dynamics的新手。我有一个要求 让我们假设我有两个相关的实体: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。我
“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)它不会进入内部,那么“其他”部分在警报中说了什么?