none
CRM 2011 Plugin Frage (Opportunity Close description in ein Opportunity Feld schreiben) RRS feed

  • Frage

  • Hallo zusammen!

    Nachdem an mich ein Wunsch herangetragen wurde, habe ich mich einmal versucht einzufuchsen in das Schreiben eines zugegebenermaßen kleinen Plug-Ins für CRM 2011. Ausgangssituation ist folgende:

    Die Information, die beim Schließen einer Opportunity angegeben wird und in der Entität "opportunityclose" im Feld "description" gespeichert wird, soll in ein neu eingeführtes Feld der zugehörigen Opportunity (identische "opportunityid") übernommen werden namens "new_closedescription". Das Plug-In soll also post-create laufen nach dem Erstellen eines Opportunity Close Records. Jetzt bin ich aber im Moment noch völlig mit der sinnvollen Synthax von C# überfordert, habe aber zumindest genügend Material zum Grundgerüst eines Plug-Ins gefunden.

    Wie bekomme ich denn jetzt am schlankesten und sichersten diesen String aus der Opportunity Close Record mit Abgleich der OpportunityID in das neu eingeführte Feld? Vielleicht kann auch jemand bei diesme Snippet weiterhelfen? Viele Dank!



    Dienstag, 25. September 2012 12:44

Antworten

  • Wie bekomme ich denn jetzt am schlankesten und sichersten diesen String aus der Opportunity Close Record mit Abgleich der OpportunityID in das neu eingeführte Feld? Vielleicht kann auch jemand bei diesme Snippet weiterhelfen? Viele Dank!

    Ich würde Dir zunächst einmal empfehlen, Dich mit dem Developer Toolkit vertraut zu machen. Das findest Du im SDK. Wenn Du es in Visual Studio integrierst, und ein neues CRM Projekt erstellst, sollte Dir das die Erstellung deutlich vereinfachen.

    Dann würde ich die Early bound types über das crmsvcutil erstellen (mit Context MyProjectContext) und ins Projekt einbinden. Und den IOrganizationServiceContext verwenden.

    - Du liest Dir aus der PrimaryEntity der OpportunityClose die ID aus.
    - Du instantiierst den MyProjectContext mit dem OrganizationService, den Du aus dem IServiceProvider kriegst, der an die Execute Funktion des Plugins übergeben wird
    - Über die Primary Entity des Pluginexecutioncontext bekommst Du die Id und description der OpportunityClose.

    Und dann kannst Du dir die Opportunity auslesen und ändern.
    In Pseudocode ungefähr so:

    var contextInstance = new MyProjectContext(organizationServiceInstance)

    var opp = (from opp in contextInstance.OpportunitySet where opp.OpportunityId == this.PluginExecutionContext.PrimaryEntity.Attributes["opportunitycloseid"] select opp).SingleOrDefault(); opp.new_description = oppClose.Description; contextInstance.UpdateObject(opp); contextInstance.SaveChanges();

    So ungefähr sollte das funktionieren.

    Viele Grüße,
    Jan Nebendahl

    Freitag, 28. September 2012 13:45