Как я могу заполнить поля информацией, связанной с одним полем поиска?

В CRM 2015 я работаю над формой "Усыновления для зачисления", в частности с тремя полями; Продукт, компонент и редакция. "Продукт" - это поле поиска, ссылающееся на объект "Продукт". "Компонент" и "Редакция" - это простые текстовые поля, которые должны быть заполнены с использованием JavaScript. Каждый продукт в сущности продукта имеет соответствующий компонент и редакционную статью, которые представляют собой OptionSets в форме продукта.

Цель: я хочу, чтобы функция запускала OnChange с "Продуктом", который просматривает эту конкретную запись о продукте, получает информацию о соответствующем компоненте и редакционную информацию и автоматически заполняет поля "Компонент" и "Редакция" в "Принятие при зачислении".

Проблема: я не могу понять, как получить значение из поля поиска "product" и использовать его для получения необходимой мне информации.

Вот немного кода, который я тестировал:

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, но не думаю, что правильно их понимаю, потому что он не получает информацию, на которую я надеюсь. Очевидно, что это очень неполная функция, но я хотел убедиться, что я получаю необходимую информацию, прежде чем выписывать остальные.

Любой совет?

1 ответ

Ответ от вызова извлечения возвращает объекты, в которые вы должны копаться, например:

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);
    }
}
Другие вопросы по тегам