我有一个 JS 项目,我想在其中提取 CRM 事件类型,让用户选择,然后使用所选事件类型执行另一个 fetchxml 查询。
我可以使用简单的 FetchXML 获取不同的事件类型代码列表
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
<entity name="activitypointer" >
<attribute name="activitytypecode" />
</entity>
</fetch>
result.attributes["activitytypecode"].formattedValue; //Returns name - 'Phone Call'
result.attributes["activitytypecode"].value; //Returns string - phonecall
我想要的是枚举的 Int32 值(例如:4210 用于电话调用),例如当我再次使用 FetchXML 进行查询时,我需要 int32 值。
我似乎无法从 JavaScript 的 FetchXML 结果中得到它,但是如果我使用 XrmToolbox - 我可以看到 int32 值..我错过了什么?
formattedValue 似乎 = 名称
并且 value 是文本表示而不是 int32
下面是该函数的完整代码:
function GetActivityTypes()
{
var fetchXML = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">';
fetchXML += '<entity name="activitypointer" >';
fetchXML += '<attribute name="activitytypecode" />';
fetchXML += '</entity>';
fetchXML += '</fetch>';
var results = XrmServiceToolkit.Soap.Fetch(fetchXML);
if (results != null)
{
for (index = 0; index < results.length; index++)
{
var a = results[index].attributes["activitytypecode"].formattedValue; //returns activity type name - Phone Call
var b = results[index].attributes["activitytypecode"].value; //returns string - phonecall
}
}
}
我想要的是事件类型的数值 - 即:电话 = 4120
我正在使用最新的 2.2.1 版本的 XrmServiceToolKit .. 我也在那里四处寻找,并注意到在“Fetch”方法中,随着结果的建立,它们会被“反序列化”。
从 Fetch 方法的 doRequest 内部
var entity = new businessEntity();
entity.deserialize(fetchResult.childNodes[ii]);
fetchResults.push(entity);
我想知道在 XrmServiceToolkit 中是否还有另一种方法可以使用……我什至尝试在我自己的 FetchRAW 方法中进行黑客攻击,以不“反序列化”结果,但我真的对 JS 不够强大……我肯定做错了什么。 . 我已经成功地将 Fetch 方法用于其他实体数据,
最佳答案
您可以使用 WebAPI (Odata) 并使用名称 Prefered 在调用标题中包含 odata.include-annotations=OData.Community.Display.V1.FormattedValue 。
function retrieveEntity(entityName, Id, columnSet) {
var serverURL = Xrm.Page.context.getClientUrl();
var Query = entityName + "(" + Id + ")" + columnSet;
var req = new XMLHttpRequest();
req.open("GET", serverURL + "/api/data/v8.0/" + Query, true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
req.onreadystatechange = function() {
if (this.readyState == 4 /* complete */ ) {
req.onreadystatechange = null;
if (this.status == 200) {
var data = JSON.parse(this.response);
if (data != null {
alert(data["_primarycontactid_value@OData.Community.Display.V1.FormattedValue"]); //for lookup text
alert(data["[email protected]"]); //for optionset text
}
} else {
var error = JSON.parse(this.response).error;
alert(error.message);
}
}
};
req.send();
}
https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/webapi/query-data-web-api#include-formatted-values
http://himbap.com/blog/?p=2077
希望它有所帮助 - M.Acosta.D
关于javascript - CRM FetchXML activitytypecode 结果没有枚举 int 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49042479/