addOnStageChange()被调用两次

问题描述 投票:2回答:1

我已经在机会实体中的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();
        }

    });
};

[基本上,单击下一步时,我需要检查是否满足某些条件,然后,只有下一阶段应该处于活动状态,否则,当前阶段应该处于活动状态。

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

为什么会这样?

javascript dynamics-crm dynamics-365
1个回答
0
投票

可能是较晚的答案,但...不要使用formContext.data.process.movePrevious()取消阶段更改,因为这会尝试将阶段移回并重新执行阶段更改(这可能会一直循环直到您回到第一个而不是使用下面的内容来取消阶段更改并停留在当前阶段

executionContext.getEventArgs()。preventDefault();

© www.soinside.com 2019 - 2024. All rights reserved.