javascript - crm 2016 javaScript 通过 Fetch 获取查找名称

标签 javascript dynamics-crm microsoft-dynamics dynamics-crm-2016

我尝试从实体中获取查找字段(无论类型如何) 使用 fetchXml 但我没有得到查找文本的结果;

例如(账户实体,所有者字段):

var fetchXml = "<fetch mapping='logical'>" +
            "<entity name='account'>" +
                "<all-attributes />" +
                "<filter>" +
                    "<condition attribute='accountid' operator='eq' value='{475B158C-541C-E511-80D3-3863BB347BA8}' />" +
                "</filter>" +
            "</entity></fetch>";

var fetchResult = XrmServiceToolkit.Soap.Fetch(fetchXml);
var owner = fetchResult[0].attributes["ownerid"];

结果[logicalName missing]:

enter image description here

我找到了一个使用 linkEntity 的解决方案,但这对我来说不是一个好的解决方案,因为我需要一个通用函数

如果我直接从表单中获取字段,我将获取所有信息: Xrm.Page.getAttribute("ownerid").getValue()[0] enter image description here

最佳答案

我看到您正在使用 XrmServiceToolkitCRM 2016。我在使用这种工具组合时遇到了同样的问题

我发现其他人(不是我)已经报告并解决了这个问题。引用this bug

似乎从 CRM 返回的 XML 已更改为包含 2 个新节点,这打破了 XrmServiceToolkit 读取选项集值的方式。

错误报告包括一个可能的修复。我将其包含在这里以供将来引用

原来的XrmServiceToolkit有这段代码

case "a:EntityReference":
    entRef = new xrmEntityReference();
    entRef.type = sType.replace('a:', '');
    var oChildNodes = tempNode.childNodes;
    entRef.id = getNodeText(oChildNodes[0]);
    entRef.logicalName = getNodeText(oChildNodes[1]);
    entRef.name = getNodeText(oChildNodes[2]);
    obj[sKey] = entRef;
    break;

您可以看到它明确引用了 oChildNodes[0]oChildNodes[1];和 oChildNodes[2] - 这是导致您遇到的错误的原因。

更新后的代码是:

case "a:EntityReference":
    entRef = new xrmEntityReference();
    entRef.type = sType.replace('a:', '');
    var oChildNodes = tempNode.childNodes;
    for (var n = 0; n < oChildNodes.length; n++) {
        var currentNodeName = oChildNodes[n].nodeName;
        switch (currentNodeName) {
            case "a:Id":
                entRef.id = getNodeText(oChildNodes[n]);
                break;
            case "a:Name":
                entRef.name = getNodeText(oChildNodes[n]);
                break;
            case "a:LogicalName":
                entRef.logicalName = getNodeText(oChildNodes[n]);
                break;
        }
    }
    obj[sKey] = entRef;
    break;

关于javascript - crm 2016 javaScript 通过 Fetch 获取查找名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38000511/

相关文章:

javascript - CoffeeScript/JavaScript - promise 与 Source Maps 兼容?

javascript - 映射对象数组,只取唯一

dynamics-crm - 微软动态 CRM 2011

php - 带 PHP 的 Ms Dynamics Nav 多语言

java - MS Dynamics 的安心服务

javascript - javascript 中的一切都可以异步吗?

javascript - 从链接定位可折叠 Accordion 内容

odata - 如何使用 $expand on ownerid 通过 Dynamics 365 Web API 获取 SystemUser 属性?

c# - 带有外部 EXE 的 ClickOnce 将无法验证

axapta - 如何在运行时重写 FormControl 方法?