收到“无法获取属性的值”'执行':对象为null或未定义Jscript-Crm2011 Onchange

Received a Unable to get value of the property 'Execute': object is null or undefined with Jscript - Crm2011 Onchange Event

本文关键字:对象 null Onchange Jscript-Crm2011 未定义 执行 属性 获取 收到      更新时间:2023-09-26

我在CRM表单中创建了3个整数字段:var1 var2和result

我需要从var1中减去var2,并在结果字段中显示结果

将Jscript代码添加到表单事件中,并将onchange事件添加到var1和var2字段中。

我收到错误:
无法获取属性"Execute"的值:对象为null或未定义

这是我的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);
}

提前感谢任何回答我问题的人!

Xrm.Page.data.entity.attributes.get的基本语法要求您传递字段的名称。

例如,假设我在Contact表单上,并且我想获取firstname字段,我会使用

 Xrm.Page.data.entity.attributes.get('firstname');

在上面的示例中,您将传入名为safe_val1safe_val2variables。没有迹象表明这些是在任何地方初始化的,所以这意味着你正在通过null,这会让CRM哭。

您需要查看要传入的字段的名称,然后使用它们。

编辑:刚刚注意到您丢失了data对象

edit2:或者,您可以使用缩写/快捷方式

Xrm.Page.getAttribute('new_fieldname');

我会试一试,但我不在电脑前,所以这只是一个一般建议(可能解决您的问题)。

代码存在一些问题。我会把它重写如下,然后回来告诉你发生了什么。

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-编程的乐趣消失的地方。)