Javascript addOnStageChange()调用了两次
我在Opportunity Entity中编写了一个关于BPF阶段变更的事件处理程序: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
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()