【问题标题】:Use client-side script to set Business Process Flow Stage on Opportunity in Dynamics CRM使用客户端脚本在 Dynamics CRM 中的机会上设置业务流程阶段
【发布时间】:2016-04-28 19:36:42
【问题描述】:

我在 Dynamics CRM 2015 Online 中工作,需要在首次根据潜在客户资格创建商机时将一些条件规则应用于商机。在某些情况下,我们需要自动将业务流程流程阶段推进到流程中的第二阶段。我已经尝试过使用 Opportunity Create 上的插件变体来设置阶段 id,但是当从潜在客户创建机会时,我在那里分配的任何值似乎都被忽略了。现在我正试图在 Opportunity Form OnLoad 事件期间触发一个 javascript 函数。这里的一个问题是我也在处理业务所需但在从潜在客户创建机会时未填写的字段,因此我无法在脚本中执行简单的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 的标志,如此所示截图:

更新后,我刷新了表单数据,但我没有看到任何方法来设置“选定”阶段以匹配新的活动阶段。我已经搜索了 SDK 文档并四处搜索,但找不到任何可以做到这一点的东西。非常感谢任何帮助!

【问题讨论】:

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


    【解决方案1】:

    在加载时取消要求必填字段以更改阶段。然后尝试进入下一个阶段。

    【讨论】:

    • 作为原始帖子中描述的过程的替代方法,我也尝试将必填字段切换为可选字段,然后执行Xrm.Page.data.process.moveNext(),但我从中得到了意想不到的行为。该调用的响应是“dirtyForm”,尽管没有其他任何改变。我尝试先发出保存和表单刷新,但仍然得到“dirtyForm”响应。根据与这些功能相关的 SDK 文档,这种行为是不正确的,因此目前也不是一种选择。
    【解决方案2】:

    如果您调用Xrm.Utility.openEntityForm() 而不是data.refresh 会怎样? (顺便说一句,我也一直在尝试找到一种在 JS 中设置选定阶段的方法,但也没有找到任何东西。我确实认为,如果你完全重新加载表单而不仅仅是数据,它应该将选中的设置为活动的。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2017-09-06
      • 2019-06-11
      • 2016-08-27
      相关资源
      最近更新 更多