2017-06-21 45 views
1

我的机会表单上的字段的onChange事件被调用两次,并且我试图追踪第二个调用的来源。我已经将执行上下文传递给了onChange函数,但不知道从那里看到调用的来源。现在我想知道是否有办法查看XRM页面的未决事件,有人知道这些信息在哪里吗?在Dynamics CRM中查看onChange字段事件的源函数

我的代码基本上是这样,绑定到机会表格的onLoad。可能有插件或第三方库或更新该字段的东西,但没有任何内容跳出。

function onLoad() { 
    Xrm.Page.data.process.addOnStageChange(handleStageChange); 
} 

function handleStageChange() { 
    var dateFieldName = "new_enteredstage1" 
    var dateFieldAttr = Xrm.Page.getAttribute(dateFieldName); 
    if (dateFieldAttr) { 
     dateFieldAttr.setValue(new Date()); 
    } 
} 

如果在阶段更改发生时new_enteredstage1为null,则会发生2个调用,并且设置该值并立即将其重置为空。如果new_enteredstage1具有值,则按预期更新该值。再次,可能会有一些第三方代码丢失,但我不知道如何追踪它。

UPDATE:

这只是发生在日期字段,它发生在所有日期字段。如果我用数字字段替换代码,则该值不会重置为空。

+0

从来没有经历过这一点,这CRM的版本是它,您可以在问题的事件处理程序? – Alex

+0

更新了问题以添加我的代码。 Microsoft动态365 版本1612(8.2.1.207)(DB 8.2.1.207)在线 – CamJohnson26

+0

我会从复制函数(即,使handleStageChange,handleStageSelected)开始,以便添加两个不同的处理程序,可能有助于追踪发生了什么 – Alex

回答

0

存在一个与“新”表单呈现引擎(Turbo Forms)相关的可能导致此问题的已知问题(example)。

您可以尝试使用传统的形式渲染引擎,看看它是否解决了这个问题: enter image description here

+2

该选项已弃用,不应使用,它不会“解决”它只是修复症状的任何内容。这意味着从早期版本升级时购买一些时间来修复损坏的脚本 – Alex

+1

好主意,但没有解决我的问题。这是在商机阶段更改中触发的现场更新。如果该字段为空,则该值将被设置并立即重置为空。如果有值,则按预期更新值。 – CamJohnson26

+2

@Alex我知道,但Turbo Forms仍然存在一些问题,这是几个月前MS支持人员建议我的方法,当以编程方式(!!!)更改该字段值时,字段的OnChange事件被触发三次。这只是对某些特定情况(无脚本错误)的解决方法,并非如此:)。 –

相关问题