Как я могу заполнить поля информацией, связанной с одним полем поиска?
В 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);
}
}