none
CRM4.0 Plugin verändern der Daten der aktuellen Entität RRS feed

  • Frage

  • Hallo,

    ich möchte mit einem Plugin Felder der Entität beim Update befüllen. Das Plugin wird korrekt angesprochen (Logfile) jedoch werden die Daten nicht in den entsprechenden Feldern abgelegt. Wo ist mein Denkfehler?

            public void Execute(IPluginExecutionContext context)
            {
                DynamicEntity entity = null;
    
                if (context.InputParameters.Properties.Contains(ParameterName.Target) &&
                   context.InputParameters.Properties[ParameterName.Target] is DynamicEntity)
                {
                    entity = (DynamicEntity)context.PostEntityImages["AddressContactFields"];
                }
                else
                {
                    return;
                }
    
                try
                {
                    lg.getAllProperties(entity);
                    ICrmService crmService = context.CreateCrmService(true);
                    lg.Log(log.logLevel.VERBOSE, "Start...");
                    crmDataQuery qry = new crmDataQuery(crmService, true);
                    lg.Log(log.logLevel.VERBOSE, "qry...");
                    adrPreviewFormat adr = new adrPreviewFormat(qry);
                    adr.OnLogEventHandler += new adrPreviewFormat.LogEventHandler(adr_OnLogEventHandler);
                    lg.Log(log.logLevel.VERBOSE, "get adr...");
                    adrPreviewFormat.adr adrData = new adrPreviewFormat.adr();
                    adrData = adr.getAdrData(entity);
                    lg.Log(log.logLevel.VERBOSE, "... adr ready.");
                    lg.Log(log.logLevel.VERBOSE, "\nLetterHead:     \n" + adr.setLetterHead(adrData));
                    lg.Log(log.logLevel.VERBOSE, "\nSalutationHead: \n" + adr.setSalutationHead(adrData));
                    lg.Log(log.logLevel.VERBOSE, "\nAdrLayout:      \n" + adr.setAdrLayout(adrData));
                    lg.Log(log.logLevel.VERBOSE, "\nAdrPartPerson:  \n" + adr.setAdrPartPerson(adrData));
                    if (entity.Properties.Contains("rz_addresslayout"))
                    {
                        entity.Properties["rz_addresslayout"] = adr.setAdrLayout(adrData);
                    }
                    else
                    {
                        entity.Properties.Add(new StringProperty("rz_addresslayout", adr.setAdrLayout(adrData)));
                    }
                    if (entity.Properties.Contains("rz_addresspartofperson"))
                    {
                        entity.Properties["rz_addresspartofperson"] = adr.setAdrPartPerson(adrData);
                    }
                    else
                    {
                        entity.Properties.Add(new StringProperty("rz_addresspartofperson", adr.setAdrPartPerson(adrData)));
                    }
                    if (entity.Properties.Contains("rz_previewletterhead"))
                    {
                        entity.Properties["rz_previewletterhead"] = adr.setLetterHead(adrData);
                    }
                    else
                    {
                        entity.Properties.Add(new StringProperty("rz_previewletterhead", adr.setLetterHead(adrData)));
                    }
                    if (entity.Properties.Contains("rz_salutationletter"))
                    {
                        entity.Properties["rz_salutationletter"] = adr.setSalutationHead(adrData);
                    }
                    else
                    {
                        entity.Properties.Add(new StringProperty("rz_salutationletter", adr.setSalutationHead(adrData)));
                    }
    
                }
                catch (System.Web.Services.Protocols.SoapException ex)
                {
                    throw new InvalidPluginExecutionException(
                        String.Format("An error occurred in the {0} plug-in.",
                           this.GetType().ToString()),
                        ex);
                }
            }
    Danke!
    Donnerstag, 16. Februar 2012 07:57

Antworten

  • Hallo,

    jetzt hab ich es selbst herausgefunden :-) crmService.Update(entity) hat gefehlt. Nun löst der Update jedoch wiederum das Plugin aus. Deshalb merke ich mir die context.CorrelationId und verlasse das Plugin wenn die Id´s gleich sind.

    Danke!

    • Als Antwort markiert KriegerK Donnerstag, 16. Februar 2012 11:22
    Donnerstag, 16. Februar 2012 09:00

Alle Antworten

  • Hallo,

    jetzt hab ich es selbst herausgefunden :-) crmService.Update(entity) hat gefehlt. Nun löst der Update jedoch wiederum das Plugin aus. Deshalb merke ich mir die context.CorrelationId und verlasse das Plugin wenn die Id´s gleich sind.

    Danke!

    • Als Antwort markiert KriegerK Donnerstag, 16. Februar 2012 11:22
    Donnerstag, 16. Februar 2012 09:00
  • if (context.Depth > 1) return; ist zuverlässiger als die context.CorrelationId-Abfrage.
    Donnerstag, 16. Februar 2012 11:22