Benutzer mit den meisten Antworten
CRM4.0 Plugin verändern der Daten der aktuellen Entität

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!
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
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