关于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()用来在加载完后在调用推动流程方法

posted @ 2022-03-24 14:03  明镜照秋霜  阅读(197)  评论(1)    收藏  举报