使用客户端脚本在Dynamics CRM中的Opportunity上设置业务流程阶段

时间:2016-04-28 19:36:43

标签: javascript dynamics-crm dynamics-crm-online

我正在使用Dynamics CRM 2015 Online,并且需要在首次使用潜在客户资格创建时将一些条件规则应用于商机。在某些情况下,我们需要自动将业务流程阶段推进到流程的第二阶段。我已经尝试使用Opportunity Create上的插件的变体来设置阶段ID,但是当从Lead创建Opportunity时,似乎我分配的任何值都会被忽略。现在我正试图在Opportunity Form OnLoad事件期间触发一个javascript函数。这里有一个问题是我也在努力对付业务需要的领域,但是当从Lead创建Opportunity时没有填写,所以我不能在脚本中做一个简单的Xrm.Page.data.process.moveNext()。相反,我使用作为CRM SDK脚本一部分的JQuery SDK函数updateRecord更新Opportunity。这是代码的重要部分:

opp = {
   OpportunityId: oppId,
   StageId: newProcessStageId
}

SDK.JQuery.updateRecord(
   oppId,
   opp,
   "Opportunity",
   function () {
      // success, refresh the form
      Xrm.Page.data.refresh();
   },
   function (error) {
      alert("An error occurred while updating the opportunity: " + error.description);
   }
);

这确实可以改变阶段,但是问题在于业务流程仍然将第一阶段显示为选定阶段的形式,即使它移动了指示活动阶段是阶段2的标志,如此处所示截图:

enter image description here

更新后,我刷新了表单数据,但是我没有看到任何方法将“selected”阶段设置为匹配新的活动阶段。我已经搜索过SDK文档并搜索过,但找不到任何可以执行此操作的内容。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

取消加载所需的字段以更改阶段。然后尝试进入下一阶段。

答案 1 :(得分:0)

如果您执行division调用而不是data.refresh怎么办? (顺便说一下,我一直试图找到一种方法在JS中设置选定的阶段一段时间,也没有找到任何东西。我认为如果你完全重新加载表单而不仅仅是数据,但是,它应将所选内容设置为活动状态。)