【问题标题】:How can I populate fields with information related to single lookup field?如何使用与单个查找字段相关的信息填充字段?
【发布时间】:2016-08-20 21:35:43
【问题描述】:

我正在处理 CRM 2015 中的“注册采用”表单,特别是包含三个字段;产品、组件和社论。 “产品”是引用产品实体的查找字段。 “组件”和“社论”是使用 javascript 填充的简单文本字段。 Product Entity中的每个产品都有对应的组件和编辑,它们是产品表单中的OptionSet。

目标: 我想要一个函数使用“产品”触发 OnChange,该函数查看该特定产品记录,获取其相应的组件和编辑信息,并自动填充“注册采用”中的“组件”和“编辑”字段。

问题: 我似乎无法弄清楚如何从“产品”查找字段中获取值并使用它来获取我需要的信息。

这是我一直在测试的一些代码:

function populateProduct(blank)
{
    if (blank != null || blank != undefined)
    {
        var productName;
        var product = Xrm.Page.getAttribute(blank);
        if (product.getValue != null || product.getValue != undefined)
        {
            productName = product.getValue()[0].name;
            console.log("the product name is " + productName);
            var componentXml = "<fetch mapping='logical'>"+"<entity name='product'>"+"<attribute name='new_component'/>"+"<filter>"+"<condition attribute = 'name' operator='eq' value='"+productName+"' />"+"</filter>"+"</entity>"+"</fetch>";
            var fetchComponent = XrmServiceToolkit.Soap.Fetch(componentXml);
            console.log("the respective component is " + fetchComponent);
        }
    }
}

日志语句只是为了测试我在测试时是否获得了我需要的信息。

日志语句显示我确实获得了产品名称,但没有获得相应的组件。

我研究过使用 Fetch 构建查询,但我认为我没有正确理解它们,因为它没有得到我希望的信息。显然,这是一个非常不完整的功能,但我想确保在写出其余部分之前获得所需的信息。

有什么建议吗?

【问题讨论】:

  • 那个 fetch 语句看起来不错(尽管我会切换到按产品 ID 而不是名称检索)。打开 Fiddler 并检查对您的 fetch 调用的响应。如果响应不是错误并且包含您想要的信息,那么只需弄清楚如何正确访问响应对象即可。如果响应是错误的,那么您就知道提取有问题。
  • 请原谅我的无知,Fiddler 是什么?另外,您知道如何正确访问该对象吗?我的代码中的第二条日志语句给了我“相应的组件是 [object Object]”

标签: javascript dynamics-crm-2015 fetchxml lookupfield lookup-field


【解决方案1】:

fetch 调用的响应返回您必须挖掘的对象,如下所示:

var componentXml = [
    "<fetch mapping='logical'>",
        "<entity name='product'>",
            "<attribute name='new_component'/>",
            "<filter>",
                "<condition attribute = 'name' operator='eq' value='"+productName+"' />",
            "</filter>",
        "</entity>",
    "</fetch>"].join('');
var products = XrmServiceToolkit.Soap.Fetch(componentXml);

if (products.length > 0) {
    if (products[0].attributes.productid != undefined)
        console.log("the product id is", products[0].attributes.productid);
        console.log("new_component is", products[0].attributes.new_component);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多