避免篡改CRM表单中的只读字段

时间:2017-08-09 20:39:06

标签: javascript dynamics-crm

我们在CRM中实施了一个内部项目管理/考勤模块,主要是在JS中。

最近我们开始面临数据问题,因为我们的同事开始使用浏览器插件(例如 CRM JS Fiddle )编辑/篡改只读字段以启用字段。

我们通过用户培训避免了这种情况。启用审核以查看用户行为。仍然是新的加入者探索这个选项&迫使我们进行微观管理。

我们可以做一些防止失败的步骤来永久避免这个缺陷吗?好奇地实施停止篡改的最佳方法。欢迎提示。

选项1 :使用预验证插件拦截请求&跳过这些字段更新

选项2 :将所有计算逻辑移至服务器,或使用计算字段等。

[我不知道它是否偏离主题,基于意见。还是希望看到一些回应]

1 个答案:

答案 0 :(得分:1)

在尝试计算,验证或保护CRM表单上的数据时,“God mode”肯定会出现问题。

要避免它的一些选项是:

  1. 使用Field Level Security将字段设为只读。
  2. 使用常规安全模型将整个记录设为只读。
  3. 使用预操作插件步骤或同步工作流程来执行计算和/或验证数据。
  4. 虽然它不会阻止这些问题,但您可以编写工作流程,以便在用户编辑应该只读的字段时通知管理员。
  5. 您可以使用JavaScript将字段设置为永不提交。我没有测试过神模式是否会覆盖这一点,但由于它是基于表单的解决方案,我们必须假设一个有动力的用户可以弄清楚如何覆盖它。

    Xrm.Page.getAttribute("new_field").setSubmitMode("never");
    

    我个人的结论和实践是依靠插件和自定义工作流来处理与数据相关的任务,而不是JavaScript和业务规则。这有一个有益的副作用,如果我们导入数据而不是在表单上输入数据,逻辑也可以工作。

    如果可能,我会尝试仅使用JavaScript和业务规则进行表单布局任务。

    如果您确实使用JavaScript在表单上显示用户即时计算结果,则可能必须在插件中复制逻辑。

    另一个想法(我自己没有做过)是将onChange事件添加到只读字段。该事件可以重新计算正确的值,以阻止用户的努力。

    例如,假设您有3个字段:价格,数量和总计。 价格和数量是可编辑的,而Total是只读的。

    触发价格和数量变化的正常计算是将Price * Quantity填充为Total。好吧,你可以在Total更改时触发相同的计算,这应该立即用正确的值覆盖任何用户输入。