[gelöst] wie komme ich an die Entität und deren Beziehung

18. April 2012 09:54

Moin an alle,

Ich bin hier in einen Schullungs Zentrum und es wurde beschlossen das alte CRM System (eine indivduelle Lösung, von einen nicht mehr existierenden Unternehmen) durch MS CRM 2011 zu ersetzten, dabei bin ich auf ein paar Probleme gestoßen.
Zu aller erst beschreibe ich mal kurz den Aufbau.
Wir haben zwei verschieden "Produktarten" welche auch zuwei unterschiedliche Entitäten im System sind, Allgemeine und Spezielle.

Bei einen Allgemeinen Produkt ist u.a. hinterleget der Name Modul Nummer und Art, z.b Ob es eine MOC, eine Prüfung oder eine komplette MCPD Schullung ist. Weiterhin gibt es eine n:m Beziehung unter den Allgemeinen Produkten, da ein MCPD ja mehere MOCs hat und ein MOC ja auch bei mehren MCPS vorkommen kann.
Ein Spezielles Produkt u.a hat ein Feld Allgemeines Produkt, Name, Nummer, Art, Ort, Datum.
Was ich machen möchte ist, wenn ich ein Allgemeines Produkt ausgewählt habe, dass die Felder die Übereinstimmen auch übernommen werden.
Weiterhin sollen auch für alle verknüpften allgemeinen Produkte spezielle Produkte erstellt werden und auch mit dem Speziellen Produkt verküpft werden.

Beispiel
Allg.: MCPD X hat den MOC a und b, MOC a Prüfung 1 und MOC b Prüfung 2
wenn sich jetzt genung Kunden/Interressenten gibt die den MCPD X machen wollen wird ein Spezielles Produkt angelegt
MCPD x (s) mit Datum von bis und einen Schulungs Raum, jetzt sollen auch noch MOC a(s), MOC b(s), Prüfung 1(s) und Prüfung 2(s) automatisch erstellt werden und die in MCPD x(s) angebenen Daten übernommen werden.

Jetzt zu meiner Frage wie lässt sich die Abbilden bzw. umsetzten (JS, net oder was ganz anderes).

MfG René
Zuletzt geändert von rene87 am 30. April 2012 09:34, insgesamt 1-mal geändert.

Re: Wie komme ich an die Daten der Entität und deren Beziehu

18. April 2012 11:19

Hallo René,

ich würde dafür ein PlugIn programmieren, das die von dir gewünschten funktionalitäten abbildet.

Re: Wie komme ich an die Daten der Entität und deren Beziehu

18. April 2012 12:53

Danke Michael für die Info.

Gibt es noch andere Quellen ausser die MOCs und die MSDN, wo man sich in das Thema einarbeiten/lesen könnte.

MfG René

Re: Wie komme ich an die Daten der Entität und deren Beziehu

18. April 2012 14:24

Hallo René,

für die Programmierung würde ich immer mit dem SDK anfangen, da ist alles beschrieben und es gibt auch sehr schöne Tutorials, um sich mit dem Thema vertraut zu machen.

Re: Wie komme ich an die Daten der Entität und deren Beziehu

18. April 2012 16:29

Hast Du Dir das mal relational aufgemalt?
Es hört sich für mich nach m:n-Beziehung an, was sich zumindest in CRM4 plugin-frei realisieren lässt.

Re: Wie komme ich an die Daten der Entität und deren Beziehu

19. April 2012 08:13

Die Beziehung alleine kann über die GUI angelegt werden, aber für das Erstellen der Datensätze wird ein PlugIn benötigt.

Re: Wie komme ich an die Daten der Entität und deren Beziehu

26. April 2012 12:01

Ok ich habe jetzt mit der Entwicklung des Plugins angefangen. Jetzt bin ich aber an den Punkt wo ich zu einen Produkt alle dazu in Beziehung stehenden Herraus finden möchte Bild der Beziehung
bei Folgenden Code kommt der Fehler das ein kein Feld mit den Namen gibt
Code:
           
QueryExpression query = new QueryExpression();
           query.EntityName = "new_produktallgemein";
           query.ColumnSet = new ColumnSet();
           query.AddLink("new_produktallgemein", "new_new_produktallgemein_new_produktallgemein", "new_new_produktallgemein_new_produktallgemein");

           var men = service.RetrieveMultiple(query);

und wenn ich die Die Zeile mit AddLinks(...) auskommentiere gibt er mir alle Produkte zurück die existieren, ich möchte aber gerne nur alle Produkte habe die in Beziehung zu Produkt A sind.

MfG René

Re: Wie komme ich an die Daten der Entität und deren Beziehu

26. April 2012 14:03

Hallo René,

so kann die Query auch nicht funktionieren. Du gibst ja nur den Namen der Beziehung an, mehr nicht. Du musst in deiner Query schon nach etwas bestimmten suchen, z.B. nach der GUID des Produktes.
Auch wirst du für jede Entität, die mit deinem allgemeinen Produkt verknüpft sind, eine eigene Query bauen und auswerten müssen.

Re: Wie komme ich an die Daten der Entität und deren Beziehu

26. April 2012 15:03

nach dem ich ein bischen weiter gschaut habe habe ich über diese Query query.EntityName = "new_new_produktallgemein_new_produktallgeme";

Alle Produkt beziehungen gefunden, leider haben diese Beziehungen keine Felder von die Jeweilgen beteiligen GUIDs drin stehen.

@ Michael: Wie müsste den so eine Query aussehen, da ich im SDK keine Beispiele dazu gefunden habe.

MfG René

Re: Wie komme ich an die Daten der Entität und deren Beziehu

26. April 2012 15:58

Hallo René,

das folgende Beispiel liefert alle Angebote, in denen ein Produkt mit der angegebenen GUID vorhanden ist
Code:
      public virtual BusinessEntityCollection Execute(CrmService crmService) {
         QueryExpression query = new QueryExpression();

         query.PageInfo = new PagingInfo();
         query.PageInfo.Count = 50;
         query.PageInfo.PageNumber = 1;


         // Setup the query for the quote entity
         query.EntityName = "quote";

         // Specify the columns to retrieve
         ColumnSet columns = new ColumnSet();
         columns.Attributes = new String[] {
               "quoteid"};

         query.ColumnSet = columns;

         // Create the link from the quote to the quotedetail entity
         LinkEntity linkEntity1 = new LinkEntity();
         linkEntity1.JoinOperator = JoinOperator.Natural;
         linkEntity1.LinkFromEntityName = "quote";
         linkEntity1.LinkFromAttributeName = "quoteid";
         linkEntity1.LinkToEntityName = "quotedetail";
         linkEntity1.LinkToAttributeName = "quoteid";

         linkEntity1.LinkCriteria = new FilterExpression();
         linkEntity1.LinkCriteria.FilterOperator = LogicalOperator.And;

         // Create the productid condition
         ConditionExpression condition1 = new ConditionExpression();
         condition1.AttributeName = "productid";
         condition1.Operator = ConditionOperator.Equal;
         condition1.Values = new Object[] {'Hier die GUID einfügen'};


         linkEntity1.LinkCriteria.Conditions = new ConditionExpression[] {
               condition1};

         query.LinkEntities = new LinkEntity[] {
               linkEntity1};

         // Execute the query and return the result
         return crmService.RetrieveMultiple(query);
      }

Re: [gelöst] wie komme ich an die Entität und deren Beziehun

30. April 2012 09:36

Danke Michael,

mit diesen Code klappt es jetzt alles soweit.

Code:
            ConditionExpression condition1 = new ConditionExpression();
            condition1.AttributeName = "new_produktallgemeinidone";
            condition1.Operator = ConditionOperator.Equal;
            condition1.Values.Add(((EntityReference)targetEntity["new_allgemeinesproduktid"]).Id);
            FilterExpression filter1 = new FilterExpression();
            filter1.Conditions.Add(condition1);
            QueryExpression query = new QueryExpression("new_new_produktallgemein_new_produktallgeme");
            query.ColumnSet.AddColumns("new_produktallgemeinidone", "new_produktallgemeinidtwo");
            query.Criteria.AddFilter(filter1);
            EntityCollection result1 = service.RetrieveMultiple(query);

MfG René