如何避免MS CRM中的任何其他人打开特定记录

时间:2010-11-09 21:53:40

标签: c# dynamics-crm

在我的应用程序中,我想阻止任何其他用户打开特定客户端的记录,而有人已经打开它。并向他展示一些错误或警告。

我该怎么做?我感谢任何答案或建议。

谢谢,

2 个答案:

答案 0 :(得分:2)

没有简单的方法可以做到这一点,但你可以做我之前提到的GCATNM。不过,我会补充一点。

如果这是内部部署安装,则可以设置接受entityid和用户名的asmx服务。这将使用当前日期更新属性的lockedOn日期。然后,让一个脚本在每分钟调用此asmx的实体记录上运行,以更新lockedOn日期。这告诉系统您仍在使用此记录。

然后,在检查是否有人锁定实体的代码中,忽略任何lockOn日期超过5分钟前​​的锁。

答案 1 :(得分:1)

您可以向实体添加查找systemuser(“当前打开方式”),并在打开表单时检查它是否有值。如果是,则显示一条消息并关闭表单或转发到只读表单。如果没有,请通过webservice调用将查找设置为当前用户(以便它在同一时刻实际存在于数据库中),以便其他人在打开表单时收到通知。保存或以其他方式关闭表单(onbeforeunload事件)时,请执行另一个Web服务调用(或者,在保存时,只需将空查找的ForceSubmit属性设置为true)以清除查找。 / p>

请注意,这不会捕获某些事情,例如崩溃的客户端(这会使记录“锁定”),因此您需要某种故障保护,例如工作流在设置后清除查找并且记录在一段时间内未被再次修改。

此外,任何其他可能修改记录的逻辑(如插件,导入,任何自定义开发)都必须以避免与此“锁定”功能冲突的方式完成。