none
Namen statt ID festlegen RRS feed

  • Frage

  • Hallo Zusammen,

    ich habe da mal ne Frage:

    ich möchte in einer Serviceaktivität ein lookupfeld befüllen lassen. Mache ich das mit der ID funktioniert es ohne Probleme.
    Jetzt kann dies natürlich in unterschiedlichen Systemen unterschiedliche ID's besitzen. Daher suche ich eine Methode in dem ich dort den Text hinterlegen kann und er sich automatisch die ID zieht.

    Als Ansatz habe ich mal das hier versucht.
    oServiceId.DataValue[0].name.toUpperCase()  = 'XXXX';  leider bekomme ich da eine Fehlermeldung DataValue is null oder kein Objekt.

    Gibt es eine Möglichkeit die den Namen zu einer ID zuzuordnen.

    Danke für Eure antworten.

     
    Freitag, 12. März 2010 07:28

Antworten

Alle Antworten

  • Du wirst um eine Such-Anfrage nach Name im Segment "Accounts" oder "Deine Entität" nicht herumkommen, die Dir zu dem gefundenen Namen die ID zurückliefert. Wenn Du mit JScript arbeitest, musst Du also erst eine RetrieveMultiple Anfrage an den WebService starten, und die Datensätze nach Deinem Suchbegriff zurückliefern lassen (ID)

    Gruß

    Gruß Carsten Groth http://carstengroth.spaces.live.com
    Freitag, 12. März 2010 07:40
  • Hallo Carsten,

    ich habe da was gelesen das es die möglichkeit mit new CrmLookup(xxxx, xxxx) gibt ? Kennst du diese Methode?
    Freitag, 12. März 2010 08:37
  • Verwende doch z.B. die HelperClass von Adi http://feckra.com/blog/?p=629
    Gruß Carsten Groth http://carstengroth.spaces.live.com
    • Als Antwort markiert Michael Sulz Samstag, 13. März 2010 10:02
    Freitag, 12. März 2010 08:44
  • Hallo,

    du kannst die GUID eines Datensatzes über den Webservice des CRM ermitteln. Dazu musst du nur den Webservice per JavaScript aufrufen, den Namen des Datensatzes übergeben und anschließend die ermittelte GUID zuweisen. Entsprechende Beispiele findest du hier:
     

    http://www.stunnware.com/crm2/data/jsweb1.htm



    Wenn es sich um eine Benutzerdefinierte Entität handelt, wird auch der Type des Lookups unterschiedlich sein. Auch diesen solltest du dann dynamisch ermittelnt. Ein entsprechendes SCript findest du hier:
    http://www.msdynamics.de/viewtopic.php?f=56&t=9223
    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    • Als Antwort markiert Michael Sulz Samstag, 13. März 2010 09:59
    Samstag, 13. März 2010 09:59
  • Hallo,

    ein paar Beispiele, wie du mit Lookups arbeiten aknnst, findest du hier:
    http://www.msdynamics.de/viewtopic.php?f=56&t=8774
    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    • Als Antwort markiert Michael Sulz Samstag, 13. März 2010 10:02
    • Tag als Antwort aufgehoben Michael Sulz Samstag, 13. März 2010 10:08
    Samstag, 13. März 2010 10:00
  • Hallo Michael,

    ich habe mir mal deine Seite angeschaut. Kann ich in deinem Code auch einfach die ID weglassen und nur den Namen als Parameter übergeben.

    var lookupitem = new Array();
    lookupitem[0] = new LookupControlItem('58e9ce6d-021d-de11-a316-005056a11444', 10008, 'Test1');
    crmForm.all.sulz_testid.DataValue = lookupitem;var lookupitem = new Array();

    Der code soll ja individuell sein. Das heißt wenn auf dem Testsystem der Wert Test 1 die ID '58e9ce6d-021d-de11-a316-005056a11444' hat kann es ja Produktiv ganz anders sein. Und auf einem Mandanten wiederrum ganz anders.
    Und wenn ich einen neuen hinzufüge oder lösche soll es ja nicht auf einen Fehler laufen, daher würde ich es lieber individuell lassen (nur nach Text suchen und füllen lassen)



    Montag, 15. März 2010 09:19
  • Hallo,

    nein, die ID kannst du nicht weglassen. Ohne ID wird das Feld nicht gespeichert. Du kannst dir aber vorher mit dem Namen über den Webservice die GUID des Datensatzes holen und dann dem Lookup zuweisen.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Montag, 15. März 2010 12:14