针对窗体或组织禁用自动保存

此主题适用于 Dynamics 365 Customer Engagement (on-premises)。 有关此主题的 Power Apps 版本,请参阅: 在模型驱动应用中禁用自动保存

自动保存可帮助用户关注其工作,而不必管理窗体中的保存数据操作。 大多数人都喜欢不必在每次更新记录时都要显式保存数据,但有些组织可能会有在设计上就要求显式保存的自定义项。 对于这些组织,可以使用选项来管理自动保存的应用方式。

自动保存如何工作

默认情况下,更新后的实体和经典实体的所有的主窗体都将启用自动保存。 在创建(初始保存)了记录之后,对窗体所做的任何都会在完成更改后 30 秒自动保存。 如果窗体中没有更改,则在打开窗体时不会发生自动保存。 在完成更改后,会重新计算自动保存开始前的 30 秒期间。 当前有人正在编辑的字段不会包括在自动保存中。 如果另外有人在您编辑记录的过程中更新了同一个记录,则在发生自动保存时,将会在窗体中检索和显示这些更改。

启用自动保存后,将仅为初次保存记录显示“保存”按钮。 创建记录之后,命令栏中的“保存”按钮不会显示,但在没有任何未保存的更改时会显示的右下角中,可以看到 自动保存按钮。 按钮。 此控件在自动保存禁用时也会显示。

可以单击此按钮以保存记录,然后立即刷新窗体中的数据。 当自动保存启用时,记录将被保存,只要您离开记录或关闭显示记录的单独窗口,都会保存记录。 对于未更新的窗体,不需要在窗体中显示保存并关闭按钮。

重要提示

在统一接口中,如果自动保存期间出现错误,页面的自动保存间隔将增加。 此外,如果更改了属性值或成功保存,间隔将重置为 30 秒。

是否应禁用自动保存?

如果您有在保存记录时执行的插件、工作流或窗体脚本,它们将在每次自动保存发生时运行。 如果这些扩展未设计成与自动保存一起工作,则可能导致不适宜的行为。 不管您是否启用自动保存,插件、工作流和窗体脚本都应设计成查找特定的更改,不应对每个保存事件都无差别地执行。

如果您为窗体配置了审核,则将每次保存视为单独的更新。 如果有人在有未保存的更改的窗体上逗留超过 30 秒,则当他们在执行自动保存后添加的其他数据,则将看到一条额外的输入。 如果您有依赖于审核数据的报告,并将每次保存视为单独的“触及”记录,则可能会看到触及的频率增加。 如果使用此方法,则应该考虑单个用户行为使其成为一个不可靠的指标,而与是否启用自动保存无关。

为组织禁用自动保存

如果您确定自动保存将导致您使用的任何扩展出现总是,则可为组织将其禁用。 没有用于为单个实体或窗体禁用自动保存的设置。

  1. 转到设置>管理

  2. 选择系统设置

  3. 对于为所有窗体启用自动保存选项,请选择

为窗体禁用自动保存

如果要为特定实体窗体禁用自动保存,则可向实体中的 OnSave 添加代码。

备注

窗体的自动保存将被禁用,但用户每次单击右下角的 自动保存按钮。 按钮时,仍将保存数据。 如果用户尝试离开或者关闭数据被更改了的窗体时,则会弹出是否需要保存更改的提示,以阻止用户离开或者关闭该窗体。

  1. 在导航栏上,选择 Microsoft Dynamics 365>设置

    设置将显示在导航栏上。

  2. 转到设置>自定义

  3. 选择自定义系统

  4. 组件下,展开实体,然后找到窗体的实体。

  5. 展开该实体节点并选择窗体

  6. 打开要编辑的窗体。

  7. 创建 JavaScript Web 资源并将其添加到窗体:

    1. 在窗体编辑器中的窗体 组下,选择窗体属性

    2. 事件选项卡上的窗体库下,选择添加

    3. 查找记录对话框中,选择新建

    4. 在 Web 资源窗体中,输入以下信息:

      价值
      Name preventAutoSave
      显示名称 阻止自动保存
      类型 脚本(JScript)
    5. 类型字段旁边,选择文本编辑器

    6. 来源字段中,粘贴以下代码:

      function preventAutoSave(econtext) {  
          var eventArgs = econtext.getEventArgs();  
          if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) {  
              eventArgs.preventDefault();  
          }  
      }  
      
      
    7. 选择确定关闭文本编辑器。

    8. 选择保存以保存 Web 资源,然后关闭“Web 资源”窗口。

    9. 查找记录 对话框中,您创建的新 Web 资源将处于选中状态。 选择添加关闭该对话框。

  8. 配置 OnSave 事件:

    1. 窗体属性窗口中的事件处理程序 分区,将事件 设置为OnSave

    2. 单击添加

    3. 处理程序属性窗口中,将设置为在上一步中添加的 Web 资源。

    4. 函数字段中键入 preventAutoSave。 区分大小写。 不要包含引号。

    5. 确保选中已启用

    6. 选中将执行上下文作为第一个参数传递

      重要提示

      如果您不这么做,脚本将无法运行。

      处理程序属性对话框应如下所示。 自定义前缀“new_”可能会由于为组织的默认发布商设置的自定义前缀而有差异。

    用于防止 Dynamics 365 for Customer Engagement 中自动保存的 OnSave 事件处理程序。

    1. 单击确定以关闭处理程序属性 对话框。

    2. 如果有 OnSave 的任何其他事件的事件处理程序,请使用绿色箭头将此处理程序移到顶部。

  9. 单击确定以关闭窗体属性 对话框。

  10. 单击保存并关闭以关闭窗体。

  11. 在解决方案资源管理器中,单击发布所有自定义项

    在将此脚本应用于 OnSave 事件之后,当用户使用此窗体编辑记录时,将在窗体右下角出现未保存的更改消息,就像未禁用自动保存时那样。 但在用户单击此消息旁边的 自动保存按钮。 按钮之前,此消息不会消失。

另请参见

创建和设计窗体
主窗体的设计注意事项
主窗体在不同客户端的显示方式
优化窗体性能