我有一个 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

javascript - CRM FetchXML activitytypecode 结果没有枚举 int 值-LMLPHP

下面是该函数的完整代码:
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/

10-10 14:44