Schreiben von Skripts für zusammengesetzte Attribute

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Einige Felder, die in einem Formular hinzugefügt werden, können mehrere Elemente von Daten darstellen. Diese zusammengesetzten Attribute verhalten sich anders als andere Attribute, wenn sie in der Webanwendung angezeigt werden, und Sie müssen Skripts anders schreiben, um sie korrekt zu verwenden.

In diesem Thema

Zusammengesetzte Attribute

Zusammengesetzte Attribute in der Webanwendung

Zusammengesetzte Attribute in Dynamics 365 für Tablets

Verringern der Unterschiede

Zusammengesetzte Attribute

In der folgenden Tabelle sind die zusammengesetzten Attribute aufgeführt:

Entität

Anzeigename

Logischer Name

Contact

Vollständiger Name

fullname

Adresse 1

address1_composite

Adresse 2

address2_composite

Lead

Vollständiger Name

fullname

Adresse 1

address1_composite

Adresse 2

address2_composite

User

Vollständiger Name

fullname

Adresse

address1_composite

Weitere Adresse

address2_composite

Account

Adresse 1

address1_composite

Adresse 2

address2_composite

Quote

Rechnungsadresse

billto_composite

Lieferadresse

shipto_composite

Order

Rechnungsadresse

billto_composite

Lieferadresse

shipto_composite

Invoice

Rechnungsadresse

billto_composite

Lieferadresse

shipto_composite

Zusammengesetzte Attribute in der Webanwendung

Wenn Felder für zusammengesetzte Attribute einem Hauptformular hinzugefügt werden, wird in der Webanwendung nur das zusammengesetzte Attribut angezeigt. Wenn ein Benutzer das Feld bearbeitet, wird ein Flyout mit den einzelnen Attributen angezeigt, aus denen das Attribut besteht. Obwohl nicht explizit dem Formular im Formular-Editor hinzugefügt, ist jedes der Attribute, die Teil des Attributs sind, für das Formular verfügbar. Obwohl Sie den Wert des zusammengesetzten Werts mithilfe von getValue lesen können, kann setValue nicht verwendet werden, um den Wert des zusammengesetzten Attributs direkt zu ändern. Sie müssen mindestens eines der Attribute festlegen, auf die das zusammengesetzte Attribut verweist.

Sie können auf die einzelnen zugehörigen Steuerelemente zugreifen, die in dem Flyout nach Name angezeigt werden. Diese Steuerelemente verwenden die folgende Namenskonvention: <composite control name>_compositionLinkControl_<constituent attribute name>. Um nur auf das Steuerelement address_line1 im Steuerelement address1_composite zuzugreifen, verwenden Sie: Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1").

Zusammengesetzte Attribute in Dynamics 365 für Tablets

Microsoft Dynamics 365 für Tablets verwendet die gleichen Formulardefinitionen wie für die Entitäten mit zusammengesetzten Attributen, interpretiert sie aber unterschiedlich. Wenn ein zusammengesetztes Attribut in der Formulardefinition gefunden wird, zeigt es alle Attribute an, die Teil des zusammengesetzten Attributs in diesem Abschnitt des Formular sind. Ein Flyout ist nicht erforderlich, weil alle Felder angezeigt werden. Sie können Skripts für das Formular schreiben, die auf jedes der einzelnen Attribute zugreifen, als ob sie dem Formular einzeln hinzugefügt worden seien.

Allerdings ist das eigentliche zusammengesetzte Steuerelement auf der Dynamics 365 für Tablets-Seite nicht vorhanden.

Verringern der Unterschiede

Wenn Sie auf das Feld fullname für die Entitäten Contact, Lead oder User zugreifen möchten, ist die Verwendung der **Xrm.Page.data.entity.**fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getPrimaryAttributeValue-Methode eine einfache Möglichkeit, den Wert für dieses Attribut abzurufen, ohne direkt darauf zu verweisen. Diese Methode funktioniert für die Webanwendung und für Dynamics 365 für Tablets.

Wenn Sie über Code verfügen, der den Wert einer der Adressen der zusammengesetzten Attribute lesen muss, um mit beiden Clients zu arbeiten, müssen Sie den Code mithilfe von Xrm.Page.context.client.getClient trennen, wie in der folgenden Funktion veranschaulicht, wobei die formatierte Adresse mithilfe von **Xrm.Utility.**72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_alertDialog in der Haupt-Webanwendung oder in der Dynamics 365 für Tablets-Version des Formulars angezeigt wird.

function showAddressDialog() {
 var address1_compositeValue;
 if (Xrm.Page.context.client.getClient() != "Mobile") {
  address1_compositeValue = Xrm.Page.getAttribute("address1_composite").getValue();
 }
 else {
  var address1_line1 = Xrm.Page.getAttribute("address1_line1").getValue();
  var address1_line2 = Xrm.Page.getAttribute("address1_line2").getValue();
  var address1_line3 = Xrm.Page.getAttribute("address1_line3").getValue();
  var address1_city = Xrm.Page.getAttribute("address1_city").getValue();
  var address1_stateorprovince = Xrm.Page.getAttribute("address1_stateorprovince").getValue();
  var address1_postalcode = Xrm.Page.getAttribute("address1_postalcode").getValue();
  var address1_country = Xrm.Page.getAttribute("address1_country").getValue();

  // Achieve equivalent formatting
  //address1_line1
  //address1_line2
  //address1_line3
  //address1_city, address1_stateorprovince address1_postalcode
  //address1_country

  var addressText = "";
  if (address1_line1 != null) {
   addressText += address1_line1 + "\n";
  }
  if (address1_line2 != null) {
   addressText += address1_line2 + "\n";
  }
  if (address1_line3 != null) {
   addressText += address1_line3 + "\n";
  }
  if (address1_city != null) {
   addressText += address1_city + ", ";
  }
  if (address1_stateorprovince != null) {
   addressText += address1_stateorprovince + " ";
  }
  if (address1_postalcode != null) {
   addressText += address1_postalcode + "\n";
  }
  addressText += address1_country;

  address1_compositeValue = addressText;
 }
 Xrm.Utility.alertDialog(address1_compositeValue);
}

Siehe auch

Schreiben von Code für Microsoft Dynamics 365-Formulare
Formular- und Feldereignisse verwenden
Verwenden des Xrm.Page-Objektmodells
Schreiben und Debuggen von Skripts für Dynamics 365 für Smartphones und Tablets
Verwenden von Ausführungskontext und der Formularereignispipeline
Verwenden von IFRAME- und Webressourcen-Steuerelementen in einem Formular
Kurzübersicht zum Formularskripting
Cclientseitige Programmierreferenz
Xrm.Page.data.entity-Attribut (clientseitige Referenz)

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright