关于dynamics365On-Premise中业务流程使用js推进
Xrm.Page.data.process(客户端引用) | Microsoft Docs
这是关于流程方面的方法官方文档
function AddOnPreStageChange(context) { var stepCollection, stepCount, stepObj, stepName, stepAttributeName, isStepReq, stepType; var flag = false; var activeStage = Xrm.Page.data.process.getActiveStage();
var activeStageId = activeStage.getId(); if (activeStageId == "需要判断的步骤ID") { setTimeout("PushStage()", 1000) } else { if (activeStage) { // Get Step count stepCount = activeStage.getSteps().getLength(); // Get the Steps of a stage for (var i = 0; i < stepCount; i++) { stepObj = activeStage.getSteps().get(i); //值 stepName = stepObj.getName(); if (stepName != "步骤的名称") { //变量名 stepAttributeName = stepObj.getAttribute(); var step = Xrm.Page.getAttribute(stepAttributeName).getValue(); if (stepAttributeName.indexOf("实体字段") != -1) { if (step != null) { flag = true; } else { flag = false; break; } } else { if (step == 20) { flag = true; } else { flag = false; break; } } } else { //变量名 stepAttributeName = stepObj.getAttribute(); var step = Xrm.Page.getAttribute(stepAttributeName).getValue(); if (stepAttributeName.indexOf("实体字段") != -1) { if (step != null) { flag = true; } else { flag = false; break; } } else { if (stepAttributeName.indexOf("实体字段") != -1 && step != null) { flag = true; } else { if (step == 20) { flag = true; } else { flag = false; break; } } } } } if (flag == true) { Xrm.Page.data.process.moveNext(function (status) { console.log(status); }); } } } } function PushStage() { var activeStageId = Xrm.Page.data.process.getActiveStage().getId(); if (activeStageId == "需要判断步骤的ID") { Xrm.Page.data.process.setActiveStage("步骤ID", function (status) { console.log(status); }); Xrm.Page.data.process.moveNext(function (status) { console.log(status); }); } }

(网图示例)
之前在窗体事件的Onload中使用Xrm.Page.data.process.moveNext,当遇上判断条件后就无法推动,函数结果会返回end。
但是页面加载完后在控制台使用moveNext却又能推动,所以可能是在Onload的时候,无法判断一下活动阶段是哪个。便调用setTimeout()用来在加载完后在调用推动流程方法
浙公网安备 33010602011771号