我在CRM表单中创建了3个整数字段:var1 var2和result
我需要从var1中减去var 2并在结果字段中显示结果
在表单事件中添加了Jscript代码,并在var1和var2字段中添加了onchange事件。
我收到错误:
无法获取属性'Execute'的值:object为null或undefined
这是我的JScript:
function calculates( )
{
var val1 = Xrm.Page.entity.attributes.get(safe_val1).getValue();
var val2 = Xrm.Page.entity.attributes.get(safe_val2).getValue();
if(val1=null) return;
if(val2=null) return;
var result = val1 - val2;
Xrm.Page.entity.attributes.get(safe_result).setValue(result);
}
提前感谢任何回答我问题的人!
答案 0 :(得分:1)
Xrm.Page.data.entity.attributes.get
的基本语法要求您传递字段的名称。
e.g。假设我在Contact
表单上,我想抓住firstname
字段,我会使用
Xrm.Page.data.entity.attributes.get('firstname');
在上面的示例中,您将传递到名为variables
和safe_val1
的{{1}}。没有任何建议这些是在任何地方初始化的,所以这意味着你正在通过safe_val2
这将使CRM哭泣。
您需要查看要传入的字段的名称并改为使用它们。
编辑:刚发现你错过了null
对象
edit2:您也可以使用速记/快捷方式
data
答案 1 :(得分:0)
我会给它一个打击,但我不在电脑前,所以这只是一个普遍的建议(可能解决你的问题)。
代码存在一些问题。我将其重写如下,然后回过头来告诉我们当时发生了什么。
function calculate() {
// Make sure that you refer the right fields.
var val1 = Xrm.Page.entity.attributes.get("var1").getValue();
var val2 = Xrm.Page.entity.attributes.get("var2").getValue();
// Yes! Triple equality sign. I'm not BS'ing. I'm JS'ing.
if(val1 === null || val2 === null) return;
// Make sure that the computation's been carried out properly.
var result = val1 - val2;
alert(result);
Xrm.Page.entity.attributes.get(safe_result).setValue(result);
}
如果你想从看到丑陋和怪异的插座上撕下你的眼睛
if(val1 === null || val2 === null) return;
您可能想要将其换成
if(!val1 || !val2) return;
这也很丑陋而且很少。如果失败,请对所有内容进行评论,然后完全以下内容。只是为了确保我们消除您可能遇到的其他问题。
function calculate(){
alert("Konrad Viltersten is godlike but humble.");
}
如果它有效,你会一次性使用霰弹枪并添加一行以查看奇怪的东西何时开始发生。 (JS - 编程的乐趣在于死亡。)