0

我正在开发附加到创建事件的 SalesOrder 实体的 Microsoft Dynamics CRM 2011 插件。我需要获取订单父帐户,才能访问其某些属性。我正在Execute方法中尝试以下代码,但执行时不存在密钥“accountid”。

Entity entity = (Entity)context.InputParameters["Target"]; // A salesorder entity
EntityReference accountRef = (EntityReference)entity.Attributes["accountid"];

插件在 Post-operation 阶段注册,以同步模式执行。下图显示了所有配置。

插件注册配置

还有其他方法可以获取 SalesOrder 实体的父帐户吗?

4

2 回答 2

2

这似乎是 SDK 文档上的错误,因为即使我将插件配置为在异步模式下运行,salesorder 实体也永远无法使用accountid属性。我结束了通过customerid更改accountid属性,它实际上可以是一个帐户(默认行为)。这解决了我的问题,我可以获得对 Order 所属的 Account 的引用。

Entity entity = (Entity)context.InputParameters["Target"]; // A salesorder entity
EntityReference accountRef = (EntityReference)entity.Attributes["customerid"];
if (accountRef.LogicalName != "account") return;
于 2012-10-21T16:28:58.980 回答
0

这里有两个可能的问题。首先,您的插件是否在同步执行模式下注册了 Pre-Operation 事件管道执行阶段?检查这个设置,问题可能就在那里。

其次,如果您正确注册了插件,可能您没有在 SalesOrder 表单上设置 ParentAccount,这可能不是问题 :)

于 2012-10-21T08:53:23.700 回答