当我从“帐户”屏幕更新自定义地址时,为什么不更新消息

时间:2011-10-25 16:59:26

标签: dynamics-crm-2011

据我了解,Dyanimcs CRM中的帐户实体附加了两个子自定义地址实体。在帐户表单中,当您编辑地址信息并单击“保存”时,我希望更新将在customeraddress实体上注册。

我正在开发一个插件,它可以帮助我们在整个企业中同步我们的地址,当CRM服务器上发生编辑时,它需要确保它传播到我们的其他系统。

在编写一些诊断代码时,我写了一个快速的wcf服务器,它允许我检查执行时存在的实体。但是,此插件仅在实际的地址表单用于编辑时触发,而不是在编辑帐户表单时触发。

public void Execute(IServiceProvider serviceProvider)
    {
        if (serviceProvider == null)
        {
            throw new ArgumentNullException("serviceProvider");
        }

        // Construct the Local plug-in context.
        ITracingService localcontext = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
        localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Entered {0}.Execute()", "AuditAddressChange"));

        IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

        var WCFDebug = ChannelFactory<IService1>.CreateChannel(new BasicHttpBinding(),
           new EndpointAddress("http://localhost:8732/WcfDebug"));

        try
        {
            Entity e = context.InputParameters["Target"] as Entity;
            if (e != null)
            {
                foreach (var attribute in e.Attributes)
                {
                    WCFDebug.WriteLine(string.Format("{0} ==> {1}", attribute.Key, attribute.Value.ToString()));
                }
            }
        }
        catch (FaultException<OrganizationServiceFault> e)
        {
            localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exception: {0}", e.ToString()));

            // Handle the exception.
            throw;
        }
        finally
        {
            localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exiting {0}.Execute()", "AuditAddressChange"));
        }
    }

此插件已注册,以便在customeraddress更新后的步骤中触发。

鉴于此插件在地址表单中发生编辑时正确执行,为什么在从帐户表单进行编辑时这不会触发?

1 个答案:

答案 0 :(得分:4)

这两个地址的处理方式与帐户记录的一部分相同。在内部,address1和address2字段的数据存储在两个customeraddress记录中。

从用户和SDK的角度来看,它们是帐户记录的一部分。这就是为什么你的插件没有被触发的原因。

为了处理帐户的地址更改(关于address1和address2字段),您必须处理帐户的更新消息。对于所有其他customeraddress记录,您必须处理customraddress的Update-Message。