【问题标题】:addOnStageChange() called twiceaddOnStageChange() 调用了两次
【发布时间】:2019-02-27 20:19:25
【问题描述】:

我在机会实体中编写了一个关于 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();
        }

    });
};

基本上,点击下一步,我需要检查是否某些条件不满足,那么只有下一个阶段应该是活动的,否则,当前阶段应该是活动的。

如果条件不满足,即阶段发生变化,我会将当前活动阶段的值存储在一个字段中。如果我明确调用保存,则再次触发事件处理程序。

为什么会这样?

【问题讨论】:

    标签: javascript dynamics-crm dynamics-365


    【解决方案1】:

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

    executionContext.getEventArgs().preventDefault();

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 2013-01-21
      • 2012-09-08
      • 2016-04-27
      • 1970-01-01
      • 2019-12-04
      • 2018-09-15
      • 2012-10-10
      • 1970-01-01
      相关资源
      最近更新 更多