Dynamics crm 2011 防止在插件中创建

Dynamics crm 2011 防止在插件中创建,dynamics-crm-2011,Dynamics Crm 2011,我在预创建服务活动时注册了一个插件。在插件中,我检查了一些条件,如果满足了这些条件,我想停止创建服务活动。我希望创建另外两个替代服务活动,而不是该服务活动。但我不想让用户知道这一切 有没有办法停止在CRM 2011上的插件中创建SA记录?如果抛出异常,您可以停止,如下所示: 抛出新的InvalidPluginExecutionException(“出现了问题!”); 希望这有帮助。 如果我回答了您的问题,请将回答标记为答案,并投票表示有帮助。不直接-例如,从输入参数中删除目标将导致抛出错误 终

我在预创建服务活动时注册了一个插件。在插件中,我检查了一些条件,如果满足了这些条件,我想停止创建服务活动。我希望创建另外两个替代服务活动,而不是该服务活动。但我不想让用户知道这一切


有没有办法停止在CRM 2011上的插件中创建SA记录?

如果抛出异常,您可以停止,如下所示:

抛出新的InvalidPluginExecutionException(“出现了问题!”);
希望这有帮助。
如果我回答了您的问题,请将回答标记为答案,并投票表示有帮助。

不直接-例如,从
输入参数中删除
目标将导致抛出错误

终止插件的通常方法是抛出异常,但用户当然会看到这一点(此外,它可能会回滚在此之前实现的任何其他逻辑)


我找到的最好的解决方案是,有一个同步的操作前插件,可以创建您想要的记录(可能基于原始记录中提供的数据),还有一个异步的操作后插件,可以删除不需要的记录。它必须是异步的,因为,例如,如果没有引发异常,对话框进程或工作流假定记录已成功创建,并在创建后立即尝试访问记录(即使不需要进一步处理)。

因此,如果用户通过Dynamics CRM GUI触发服务活动的创建,表单通常保存(通过发送内部
UpdateRequest
),然后通过另一次数据库访问刷新。如果您通过插件删除了两个事件之间的记录,用户肯定会收到标准的“记录找不到”错误消息通知。在这种情况下,在插件中抛出一个异常来阻止记录的创建相当于通知用户,但至少他会看到一条可定制的消息,可能会告诉他为什么保存不起作用

在我看来,通过插件处理这个问题的最好方法是

  • 检查你的情况
  • 更改(而不是删除)现有的“保存服务”活动,以匹配要创建的其他服务活动之一的条件。这样就不会不必要地删除任何内容
  • 创建其他服务活动
  • 在使用现在更改的服务活动刷新表单之后,您可以在javascript中执行任何您想要的操作(打开另一条记录,关闭当前记录,等等)
  • 如果您可以控制GUI,那么您可以做一些不同的事情(例如,删除record post操作,尽管这仍然会导致一个额外的、不必要的数据库操作),并且您可以始终使用javascript进行客户端验证

    还有一点:我还必须补充一点,从用户的角度来看,保存一条记录而不立即查看它将构成一种意外的CRM行为。如果发生了类似的情况,我至少希望接受一些关于CRM部分如何工作的培训,或者收到一个通知,说明事实上发生了一些根本不同的事情。

    如OP所述:“但我不希望用户收到所有这些通知。”。这使得抛出异常成为不可能。