0

我正在定制我们的 CRM 解决方案。由于时区不同,有时案例或任务中的截止日期不一致,因为时间默认为午夜 12 点。因此,对于不同的时区,截止日期可能会晚一天或更早。

为了解决这个问题,我们将到期日期字段(逻辑名称 =“followupby”)的默认时间设置为晚上 7 点。我们正在使用 Java 脚本函数为截止日期字段创建一个 OnChange 事件,如下所示。在“处理程序属性”对话框中设置库和函数名称,我选中“将执行上下文作为第一个参数传递”选项。因此,在我下面的函数中,它接收“上下文”参数:

setCaseDueDate: function (context) {

    var oField = context.getEventSource().getValue();
    var sTmp = oField;

    var hours =19;
    var minutes = 0;
    var seconds = 0;

    if (typeof (oField) != "undefined" && oField != null) {

        var newTime = new Date(sTmp.getFullYear(), sTmp.getMonth(), sTmp.getDate(), hours, minutes, seconds);
        context.getEventSource().setValue(newTime);
    }        
},

但是,我不断收到一条错误消息,提示“此字段的自定义事件出现错误。错误‘setCaseDueDate’未定义。”

可能是我的函数中的某些值未定义,还是可能没有正确获取“上下文”参数?

谢谢,非常感谢您的帮助。

** *更新* ** * ** * ** *

没关系……我将我的函数与现有的 Javascript 函数集合放在一起,然后我决定放入一个单独的新网络资源中,它现在可以工作了……很奇怪但可以工作。

谢谢。

4

1 回答 1

0

您定义 JavaScript 函数的代码有误,请尝试使用

function setCaseDueDate(context) {
// rest of the code
}

并且要更改日期,不需要上下文,例如:

function setCaseDueDate() {
   var fieldName = "followupby";
   var sTmp = Xrm.Page.getAttribute(fieldName).getValue();
   if (currentDate != null) {
      var newTime = new Date(sTmp.getFullYear(), sTmp.getMonth(), sTmp.getDate(), 19, 0, 0);
      Xrm.Page.getAttribute(fieldName).setValue(newTime);        
   }
}
于 2013-11-13T17:22:47.830 回答