我在预创建服务活动时注册了一个插件。在插件中,我检查了一些条件,如果满足,我想停止创建服务活动。而不是那个服务活动,我想创建另外两个将是替代品。但我不希望用户收到所有这些通知。
有没有办法停止在CRM 2011上的插件中创建SA记录?
答案 0 :(得分:5)
因此,如果用户通过Dynamics CRM GUI触发创建服务活动,则通常会保存表单(通过发送内部UpdateRequest
),然后通过另一次访问数据库进行刷新。如果您通过插件删除了两个事件之间的记录,则用户将当然通知标准“无法找到记录”错误消息。在这种情况下,在插件中抛出一个阻止创建记录的异常是相同的,因为将通知用户,但至少他会看到一个可自定义的消息,或许告诉他为什么保存不起作用。
在我看来,通过插件处理此问题的最佳方法是
如果你可以控制GUI,你可以做一些不同的事情(例如,删除记录后操作,虽然这仍然会导致一个额外的和不必要的数据库操作),并且你总是可以使用javascript为客户端 - 验证。
还有一点:我还必须从用户的角度添加它,保存记录然后不立即看到它将构成意外的CRM行为。如果发生类似这样的事情,我至少会期望接受关于CRM部分如何运作的一些培训或者事实上发生了根本不同的事情的通知。
答案 1 :(得分:4)
不直接 - 例如从Target
删除InputParameters
会导致抛出错误。
终止插件的常用方法是抛出一个Exception,但当然你的用户会看到这个(加上它可能会回滚你之前实现的任何其他逻辑)。
我找到的最佳解决方案是使用同步预操作插件创建所需的记录(可能基于原始记录中提供的数据)和异步后操作插件,删除不需要的记录它必须是异步的,因为,例如,对话框进程或工作流假定如果没有抛出异常就成功创建了记录,并尝试在创建记录后立即访问该记录(即使不需要进一步处理)。
答案 2 :(得分:0)
如果你抛出异常就可以停止:
throw new InvalidPluginExecutionException("Something is wrong!");
希望这会有所帮助。 如果我回答了您的问题,请将回复标记为答案,并投票表示有帮助。