【问题标题】:Call javascript function after saving a form in CRM 2011在 CRM 2011 中保存表单后调用 javascript 函数
【发布时间】:2014-04-14 08:51:21
【问题描述】:

我是 CRM 2011 的新手。我在 Common.js 文件中创建了一个 javascript 函数。该函数将在多种形式的其他函数中调用。此函数还包含 FetchXML 查询。在每个表单中,我创建了一个包含对我的通用函数的调用的特定函数。我在表单的 OnSave 事件上调用此特定函数。问题是,当我在保存时调用特定函数时,在通用函数中,我将对刚刚保存的实体进行 FetchXML 查询,但 FetchXML 查询在保存发生之前返回值(我刚刚保存的实体它调用了具有 FetchXML 查询的函数,我在 FetchXML 查询的结果中看不到更改后的属性及其新值!)。我尝试了另一种解决方案,而不是从 OnSave Dialogue 调用特定函数,我使用了 Xrm.Page.data.entity.addOnSave(My specific function) 方法来确保在保存表单后调用它,但它仍然存在获取旧值。你能帮帮我吗?

谢谢, 瓦卢德

【问题讨论】:

  • 什么用例要求您检索更新实体的先前值?正如下面的 Guide Preite 所述,您想要完成的任务并不容易获得,但有一些复杂的解决方法可以实现您的目标 - 它们需要大量编码和对 CRM 开发的透彻理解,才能阅读审计主目录,以便您可以检索最后的更新实体的变化。
  • 如果您想要当前记录中的值,请不要使用 FetchXML - 在 onSave 事件期间直接从表单中获取它们。如果您想要来自相关记录的数据,那么无论是在保存之前还是之后运行都无关紧要,因为该数据来自数据库,与对当前记录所做的更改无关。
  • 对不起,我想我没有很好地解释我的请求。我没有说我需要更新前的值,它恰恰相反。想想一个字段被更改的表单,当我保存时,我在 Common.js 中调用了一个函数,该函数 Fetch 许多实体包括更新的实体,但获取的结果不包含该字段的新值:(跨度>

标签: dynamics-crm-2011 dynamics-crm dynamics-crm-4 dynamics-crm-online


【解决方案1】:

有两种可能:

  1. 我认为您应该使用表单加载事件并检查是否通过 Xrm.Page.ui.getFormType()=1 为第一种类型创建了记录,因为要创建新记录,所以不要 FetchXMl。

  2. 如果 Xrm.Page.ui.getFormType()=2 则 FetchXml

    或者你可以使用

     setInterval  (function() FetchXML},3000);
    

【讨论】:

  • 你忘记了 save&close 场景,如果你把逻辑移到 onload 事件并且确定点击 save&close fetchxml 代码将不会被执行
  • 谢谢你。我可能会做一些更安全但不是很干净的事情。我将这些字段作为参数传递并比较它们是否更改。这很愚蠢,但我现在别无选择。这是我在 Dynamics 中的第一个任务,我觉得奇怪的是,像这样的明显问题没有得到处理。请问您是否有任何适用于 Dynamics 2011 的好的实验室?非常感谢!
  • @Walloud 我没有 Dynamics 2011 实验室,但我从我的前辈那里得到了培训,他太好了 :) 如果你需要学习任何东西,Google 是你最好的伙伴。
【解决方案2】:

Xrm.Page.data.entity.addOnSave 将在OnSave 事件中添加一个函数,这意味着在记录保存之前仍然会执行。

我建议将逻辑移到插件中。

【讨论】:

  • 谢谢贵多!这是我在 CRM 2011 上工作的第一个任务,我从未使用过插件,我仍然不知道如何编写以及如何从我的 javascript 中调用它。你能解释一下插件如何解决这个问题吗?有没有更简单的解决方案?谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
相关资源
最近更新 更多