Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript addOnStageChange()调用了两次_Javascript_Dynamics Crm_Dynamics 365 - Fatal编程技术网

Javascript addOnStageChange()调用了两次

Javascript addOnStageChange()调用了两次,javascript,dynamics-crm,dynamics-365,Javascript,Dynamics Crm,Dynamics 365,我在Opportunity Entity中编写了一个关于BPF阶段变更的事件处理程序: var checkForAccountApproved = function (executionContext) { var formContext = executionContext.getFormContext(); formContext.data.process.addOnStageChange(function (stageContext) { var stage

我在Opportunity Entity中编写了一个关于BPF阶段变更的事件处理程序:

var checkForAccountApproved = function (executionContext) {
    var formContext = executionContext.getFormContext();
   formContext.data.process.addOnStageChange(function (stageContext) {

        var stageName = stageContext.getEventArgs().getStage().getName().toString();
        if (some conditions) {
            formContext.data.process.movePrevious();

        }
        else {
            currentActiveStage.setValue(stageName);
            formContext.data.entity.save();
        }

    });
};
基本上,在单击next时,我需要检查是否有一些条件不满足,然后仅下一阶段应处于活动状态,否则当前阶段应处于活动状态

如果不满足条件,即发生阶段更改,我将在字段中存储当前活动阶段的值。如果显式调用save,则会再次触发事件处理程序


为什么会这样?

答案可能晚了,但。。。 不要使用formContext.data.process.movePrevious()取消阶段更改,因为这会尝试将阶段移回并重新执行阶段前更改(这可能会一直循环,直到您返回到第一个阶段)。。改为使用以下选项,取消阶段更改并保持在当前阶段

executionContext.getEventArgs().preventDefault()