Dynamics crm “无法获取”;名称“;链接实体的查找字段(Web API+;FetchXml)
我有一些通过Dynamics CRM Web API执行的fetchXml。fetchXml查询的构造如下:Dynamics crm “无法获取”;名称“;链接实体的查找字段(Web API+;FetchXml),dynamics-crm,dynamics-crm-online,dynamics-crm-2016,fetchxml,dynamics-crm-webapi,Dynamics Crm,Dynamics Crm Online,Dynamics Crm 2016,Fetchxml,Dynamics Crm Webapi,我有一些通过Dynamics CRM Web API执行的fetchXml。fetchXml查询的构造如下: <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="new_someEntityA"> <attribute name="new_lookupForSomeEntityA" /> <l
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="new_someEntityA">
<attribute name="new_lookupForSomeEntityA" />
<link-entity alias="new_someEntityB" name="new_someEntityB" from="entityBId" to="entityAId" visible="false" link-type="outer">
<attribute name="new_lookupForSomeEntityB" />
</link-entity>
</entity>
</fetch>
但这似乎只是获取主实体的格式化值,而不是链接实体的格式化值。这是Web API的限制还是我做错了什么?如果您有任何帮助,我们将不胜感激。以下是一些使用Web API+FetchXml返回链接实体选项集格式化值的代码。
根据8.2版API进行测试:
var-oDataUrl='https://[your_org].crm4.dynamics.com/api/data/v8.2/';
var encodedFetchXml=encodeURI(`
`);
$.ajax({
键入:“获取”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
url:“${oDataUrl}联系人?fetchXml=${encodedFetchXml}”,
beforeSend:函数(XMLHttpRequest){
setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“首选”、“odata.include annotations=odata.Community.Display.V1.FormattedValue”);
}
}).然后(功能(响应){
//响应对象中包含的格式化值
// incidentOrigin@OData.Community.Display.V1.FormattedValue:“WhatsApp”
console.dir(应答);
});
这是返回的数据:{
“@odata.context”:“https://[your_org].crm4.dynamics.com/api/data/v8.2/$metadata#contacts(contactid)”,
“价值”:[{
“@odata.etag”:“W/\“873006\”,
“联系人ID”:“ecfd1feb-d826-468a-bfe3-6ebd781c39f4”,
“联系人姓名”:“Ada Lovelace”,
"incidentOrigin@OData.Community.Display.V1.FormattedValue“:“WhatsApp”,
“意外事故来源”:269420000
}]
}
它同时适用于内部和外部链接类型
链接与属性同名的实体属性别名如果使链接实体属性的别名与属性名称相同,则根本不会返回该属性。此问题似乎适用于所有链接实体属性
省略链接实体属性别名如果省略链接实体属性的别名,将返回一个可怕的名称:
返回的对象有如下字段:事件_caseorigincode@OData.Community.Display.V1.FormattedValue:“WhatsApp”
可能您遇到的问题已在8.2版中得到解决。是否尝试将name属性添加到
节点?是的,我尝试过。在SQL中,该属性是“new_lookupForSomeEntityBName”,如果我添加该属性,就会得到一个表示该属性不存在的返回。如果我使用“name”(小写)执行此操作,则查询返回,但仍然只有一个GUID,没有查找名称。您需要在entity new_someEntityB上指定name属性的名称。您可以在实体的主选项卡上的CRM解决方案中查找它。在SQL中,new\u lookupForSomeEntityBName
是一个过滤视图的列,它映射到实际表的主字段名。我将其更改为:
当我这样做时,我得到与返回值相同的id,只是:new\u someEntityB\u x002e\u new\u lookupForSomeEntityBid:[GUID]
不要使用名称属性
属性,而只使用
。
"Prefer": "odata.include-annotations=OData.Community.Display.V1.FormattedValue"