Aus der Praxis – Personendetails in InfoPath auslesen
avatar

imageDatenverbindungen werden in InfoPath angelegt um Daten aus SharePoint, Webdiensten oder anderen “sekundären Datenquellen” abzurufen. Für ein Projekt richtete ich eine SharePoint Liste als Datenverbindung ein, die ein “Person oder Gruppe”-Feld enthielt. Der Benutzer sollte dann aus einem Dropdown-Listenfeld einen Eintrag auswählen und die zugehörige Person angezeigt bekommen.

image Leider musste ich feststellen, dass InfoPath von den Werten in diesem Felder nur folgende erhält: DisplayName (der Name trügt, dies ist nicht der angezeigte Name, sondern der Benutzername mit vorgestellter Domäne), AccountId und AccountType. Was mich aber wirklich interessierte, war die E-Mail-Adresse.

Woher sollen also diese zusätzlichen Informationen kommen? Wie wäre es mit dem People-Webdienst?

Zuerst musste dafür eine zusätzliche Datenverbindung eingerichtet werden:

  • Neue Verbindung erstellen mit: Daten empfangen
  • SOAP-Webdienst
  • “http://MeinSharePoint/_vti_bin/people.asmx”
  • “ResolvePrincipals”
  • Wert von “tns:principalType” auf “All” setzen
  • Verbindung benennen (z.B. “WebService_People_ResolvePrincipals”)
  • Haken entfernen vor “Daten beim Öffnen des Formulars automatisch abrufen”

imageDie erstellte Sekundäre Datenquelle bietet deutlich mehr Informationen:

Nachdem die Verbindung erstellt war, musste zusätzliches Feld für die E-Mail-Adresse erstellt werden. Dieses Feld konnte dann mit einer Regel jedes Mal gesetzt werden, wenn sich das Feld mit dem Benutzernamen geändert hat.

Die Regel besteht aus drei Aktionen:

  • principalKeys (Suchstring) aus Benutzernamen (DisplayName von pc:Person) befüllen
  • Webdienst-Verbindung abfragen
  • E-Mail-Adresse aus sekundärer Datenquelle auslesen

Hier noch einmal in Screenshots:

image
Die komplette Regel 

image
Schritt 1: Feld string = . setzen 

image
Schritt 3: Feld EntwicklerEmail = Email setzen 

Nach dieser Anpassung wird das Feld EntwicklerEmail jedes Mal mit der E-Mail-Adresse des Benutzers aus dem Feld Entwickler gefüllt, wenn sich dieses ändert.

Schreibe einen Kommentar