CRM 2011 - установить значение поля валюты с помощью JavaScript - PullRequest
4 голосов
/ 24 августа 2011

Я действительно не могу найти, как я могу извлечь значение из поля валюты и установить его в качестве значения для другого поля валюты для другого объекта.

Мой следующий код не работает:

var entities = retrieveRecords("trainingSet?$filter=trainingId eq guid'" + GetLookUpData("trainingid").id + "'");
    if (entities != null) {
        if (entities.d.results.length > 0) {
            if (entities.d.results[0]["Price"] != null) {
                alert(entities.d.results[0]["Price"]);
                Xrm.Page.getAttribute("price").setValue(entities.d.results[0]["Price"].getValue());
                Xrm.Page.getAttribute("price").setSubmitMode("always");
            }

        }
    }

Ошибка говорит о том, что элемент управления только за исключением чисел или нуля.

Любая помощь будет очень признательна!Спасибо!

Ответы [ 2 ]

6 голосов
/ 25 августа 2011

Я использовал это раньше, хотя я не фанат eval.

function SetMoneyAttribute(value, attribute) {
                      Xrm.Page.getAttribute(attribute)
                    .setValue(parseFloat(eval(value)));
        }

здесь есть запись в блоге о настройке полей формы с запрошенными значениями.

http://crmscape.blogspot.com/2011/03/crm-2011-odata-json-and-crm-forms.html

1 голос
/ 21 ноября 2013
//mimic crm object model
var Xrm = { 
    Page : { 
        getAttribute : function(sAttr) { 
            return { 
                setValue : function(nValue) { 
                    alert(sAttr + ': ' + nValue);
                }
            }; 
        }  
    } 
};

function mySetValue(sAttr, nValue, nDefault) {
    Xrm.Page.getAttribute(sAttr)
        .setValue(
        !isNaN(nValue = parseFloat(nValue)) || 
        !isNaN(nValue = nDefault)
        ? nValue
        : null);                
} 

//call with various types of values
mySetValue("new_attr1",0);
mySetValue("new_attr2","");
mySetValue("new_attr3",4);
mySetValue("new_attr4",34.3434);
mySetValue("new_attr5","545.43");
mySetValue("new_attr6",{},0);
//mySetValue("new_attr7",entities.d.results[0]["Price"], 100.00);

Поскольку в состоянии ошибки атрибуты требуют только цифры или ноль.Для соответствия первым isNaN проверяет, возвращает ли parseFloat число.Если он возвращает неопределенное значение, он пытается получить число из значения по умолчанию (если оно указано).Если это неопределенное значение, а не число, тогда ему присваивается нулевое значение.Вы можете пропустить второй тест isNaN, если вам не нужно значение по умолчанию или если значение по умолчанию всегда известно (т. Е. Ноль или 0,0)

...