【问题标题】:Dynamics CRM Plugin - setting a related recordDynamics CRM Plugin - 设置相关记录
【发布时间】:2013-08-20 12:15:06
【问题描述】:

我正在编写一个在发票的 PostCreation 中触发的插件。这个插件创建了一个佣金记录,并且应该在佣金记录上设置一个查找字段,该字段指向新创建的发票。但是,在插件运行时,发票的 Guid 似乎没有任何价值 - 我假设它只有在提交到数据库后才获得 Guid?

有没有一种方法可以让我获得新发票的 Guid 甚至手动设置它,以便在插件结束之前知道它会是什么?

谢谢

【问题讨论】:

    标签: c# dynamics-crm-2011


    【解决方案1】:

    在插件内部,只有当步骤在异步模式或同步模式后事件中注册时,才能访问OutputParameters

    来自MSDN - Understand the Data Context Passed to a Plug-In

    但是,只有同步的 post-event 和异步注册 插件填充了 OutputParameters,因为响应是结果 核心平台运营

    因为您将步骤注册为 post-event,您可以使用 Daryl 的代码(正确的属性是 id 小写)

    来自MSDN - Sample: Basic Plug-In

    在创建消息上为帐户实体注册此插件, 并处于异步模式。或者,您可以在 沙盒中的后期事件。

    在基本插件示例中有一个关于执行模式的警告,因为代码使用了OutputParameters集合,但没有解释原因。

    本例中的代码为:

    Guid regardingobjectid = new Guid(context.OutputParameters["id"].ToString());
    

    【讨论】:

    • 与异步与同步无关。 Daryl 的回答是正确的,只是大小写错误。
    • @JoshPainter 感谢您发现错字。我很困惑,因为我没有注意到用户在活动后注册了插件。输出参数不会在同步前事件中填充。
    • @JoshPainter 我更正了我的答案,如您所见(与用户情况无关)存在执行模式相关的情况。
    【解决方案2】:

    只要您处于 Invoice 的 Post Creation 步骤,Guid 就应该在那里。

    你在哪里找它?你有没有试过这个:

    Guid id = (Guid)context.OutputParameters["id" ];
    

    【讨论】:

    • 感谢您的快速回复,但此代码似乎给了我“密钥不存在”错误
    • Id 必须是“id”。案件很重要!我已经编辑了上面的答案。 msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多