Javascript 在Dynamic 365 Online中触发OnStageChange事件时,如何判断用户是否正在移动到业务流程流的下一个或上一个阶段?

Javascript 在Dynamic 365 Online中触发OnStageChange事件时,如何判断用户是否正在移动到业务流程流的下一个或上一个阶段?,javascript,dynamics-crm,Javascript,Dynamics Crm,我正在编写一个JS脚本,当用户在Dynamic 365 Online中移动到业务流程流的下一个阶段时,截取并执行一些额外的验证 我将我的函数绑定到Dynamic365事件,但该事件不仅在用户移动到下一个阶段时触发,而且在用户移动回上一个阶段时也会触发 有没有办法告诉用户是进入下一个阶段还是上一个阶段?您需要将OnStageChange的代码更新到getEventArgs,这将允许您查看getDirection是“下一个”还是“上一个” 没有看到您的代码,我无法提供具体的实现建议,但这回答了您的问

我正在编写一个JS脚本,当用户在Dynamic 365 Online中移动到业务流程流的下一个阶段时,截取并执行一些额外的验证

我将我的函数绑定到Dynamic365事件,但该事件不仅在用户移动到下一个阶段时触发,而且在用户移动回上一个阶段时也会触发


有没有办法告诉用户是进入下一个阶段还是上一个阶段?

您需要将
OnStageChange
的代码更新到
getEventArgs
,这将允许您查看
getDirection
是“下一个”还是“上一个”

没有看到您的代码,我无法提供具体的实现建议,但这回答了您的问题

以下是进一步了解如何处理“OnStageChange”事件的链接:


多亏了@OneNeptune,我成功地解决了以下问题

const NEXT_STAGE_OPTION = "Next"

function onAccountFormLoad (context) {
    context.getFormContext().data.process.addOnStageChange(checkMoveStage);
}

function checkMoveStage(context) {
    var targetStageName = context.getFormContext().data.process.getActiveStage().getName();
    var direction = context.getEventArgs().getDirection();
    console.log("Move to " + direction + " stage:" + targetStageName);

    if (direction === NEXT_STAGE_OPTION) {
        // Perform necessary validation when moving to next stage.
    }
}

函数onFormLoad被添加到表单的onLoad事件中,并选中了“将执行上下文作为第一个参数传递”选项。

能否向我们展示您的代码?非常感谢。我确实检查过那个文档,我不敢相信我错过了关于getEventArgs的部分。@tsukumogami如果这是正确的答案,请标记它,以便将来有此问题的人能够找到解决方案。你不是第一个遇到这个问题的人,也不会是最后一个!很高兴我能帮忙!