Scripting (AdobeForms): Unterschied zwischen den Versionen

Aus SAP Wiki ツ
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 14: Zeile 14:
<syntaxhighlight lang="javaScript" line start="1">
<syntaxhighlight lang="javaScript" line start="1">
  if (xfa.record.gv_is_collective.value == "X")
  if (xfa.record.gv_is_collective.value == "X")
  { … }
  { … }
  else
  else
  { … }
  { … }
</syntaxhighlight>
</syntaxhighlight>
Zeile 37: Zeile 34:
<syntaxhighlight lang="javaScript" line start="1">
<syntaxhighlight lang="javaScript" line start="1">
  if (data.MasterPages.MP1.Info.Level.Mahns.rawValue == “1”)
  if (data.MasterPages.MP1.Info.Level.Mahns.rawValue == “1”)
  { … }
  { … }
  else
  else
 
  { … }
  { … }
</syntaxhighlight>


=== Relative Pfade ===
=== Relative Pfade ===
Zeile 52: Zeile 47:
Beispiel mit JavaScript:
Beispiel mit JavaScript:


<syntaxhighlight lang="javaScript" line start="1">
  if (this.rawValue == null)
  if (this.rawValue == null)
  {  
  {  
  this.presence = "hidden";
  this.presence = “hidden”;
  }
  }
</syntaxhighlight>


==== Objekt auf gleicher Ebene ====
==== Objekt auf gleicher Ebene ====
Zeile 66: Zeile 60:
Beispiel mit JavaScript:
Beispiel mit JavaScript:


<syntaxhighlight lang="javaScript" line start="1">
  if (testvariable.rawValue == null)
  if (testvariable.rawValue == null)
   
  { … }
  { … }
</syntaxhighlight>


==== Objekt auf unterer Ebene ====
==== Objekt auf unterer Ebene ====
Zeile 75: Zeile 70:


Beispiel mit JavaScript:
Beispiel mit JavaScript:
<syntaxhighlight lang="javaScript" line start="1">


  if (this.testvariable.rawValue == null)
  if (this.testvariable.rawValue == null)
  { Ausblendung hier mit presence }
  { Ausblendung hier mit presence }
</syntaxhighlight>


==== Objekt auf oberer Ebene ====
==== Objekt auf oberer Ebene ====
Zeile 86: Zeile 83:
Beispiel mit JavaScript:
Beispiel mit JavaScript:


'''Übergeordnetes Teilformular mit allen Objekten die darunter liegen ausblenden:'''
'''Übergeordnetes Teilformular mit allen Objekten die darunter liegen ausblenden:'''
  this.parent.presence = “hidden”;
<syntaxhighlight lang="javaScript" line start="1">
  this.parent.presence = "hidden";
</syntaxhighlight>


'''Mehrstufiges hochspringen:'''
'''Mehrstufiges hochspringen:'''
<syntaxhighlight lang="javaScript" line start="1">
  this.parent.parent.subform1……
  this.parent.parent.subform1……
</syntaxhighlight>


'''Zwischen Hierarchieebenen navigieren:'''
'''Zwischen Hierarchieebenen navigieren:'''
  this.parent.subform2.textfield.rawValue = “text”;
<syntaxhighlight lang="javaScript" line start="1">
  this.parent.subform2.textfield.rawValue = "text";
</syntaxhighlight>


== xfa.resolveNode ==
== xfa.resolveNode ==
Zeile 102: Zeile 105:


Beispiel mit JavaScript:
Beispiel mit JavaScript:
 
<syntaxhighlight lang="javaScript" line start="1">
  xfa.resolveNode(“testvarialbe”).rawValue = “test”;
  xfa.resolveNode(“testvarialbe”).rawValue = "test";
</syntaxhighlight>


== Quelle ==
== Quelle ==

Aktuelle Version vom 12. August 2021, 14:26 Uhr


xfa.record

Wenn mit SFP ein Formular geöffnet wird, sind unter Reiter “Kontext” Objekte zu finden, die im Formular gebindet werden können, wenn diese nicht ausgeblendet sind.

Mit xfa.record kann im Formular direkt auf den Kontext des Objektes zurückgegriffen werden. So kann man prüfen, ob ein Feld z.B. true ist und dann weitere Schritte durchführen wie z.B. ein Teilformular aus- oder einzublenden.

HINWEIS: Der Wert lässt sich nur mit variablename.value ansprechen.

Beispiel mit JavaScript:

 if (xfa.record.gv_is_collective.value == "X")
 {  }
 else
 {  }

SOM-Ausdruck

Es besteht die Möglichkeit auf Objekte in Formular zuzugreifen, die nicht in gleichen Hierarchiebereich liegen. Der SOM-Ausdruck ist der hierarchische Pfad zum Objekt. Dieser kann absolut und relativ sein.

Absolute Pfade

Der absolute Pfad kann bequem über das Scripting bei den Events von einem Objekt kopiert werden.

Wie bei Dateipfade oder Pfade in HTML/CSS sind absolute Pfade darauf angewiesen, dass das Objekt sich genau an dieser Stelle befindet. Wenn die Hierarchie sehr tief ist, könnte es ein Argument sein releative Pfade zu nutzen.

Beispiel mit JavaScript:

 if (data.MasterPages.MP1.Info.Level.Mahns.rawValue == 1)
 {  }
 else
 {  }

Relative Pfade

Objekt-Selbstreferenz

Wird das Objekt angesprochen, wo sich das Scripting befindet, so kann mit Javascript durch “this” oder mit FormCalc “$” das Objekt selbst angesprochen werden:

Beispiel mit JavaScript:

 if (this.rawValue == null)
 { 
 this.presence = "hidden";
 }

Objekt auf gleicher Ebene

Sollte sich im Scripting auf ein Objekt bezogen werden, dass sich in der gleichen Hierarchieebene oder Teilformular befindet, so kann es direkt mit variablename.rawValue angesprochen werden:

Beispiel mit JavaScript:

 if (testvariable.rawValue == null)
 {  }

Objekt auf unterer Ebene

Wenn ein Objekt z.B. in einem Teilformular angesprochen und das komplette Teilformular ausgeblendet werden soll:

Beispiel mit JavaScript:

 if (this.testvariable.rawValue == null)
 { Ausblendung hier mit presence }

Objekt auf oberer Ebene

Es besteht die Möglichkeit ausgehend von einem Objekt z.B. Teilformular in das nächst übergeordnete Objekt zu springen und sogar anschließend sich auf ein Objekt zu beziehen, dass sich auf der Ebene befindet:

Beispiel mit JavaScript:

Übergeordnetes Teilformular mit allen Objekten die darunter liegen ausblenden:

 this.parent.presence = "hidden";

Mehrstufiges hochspringen:

 this.parent.parent.subform1……

Zwischen Hierarchieebenen navigieren:

 this.parent.subform2.textfield.rawValue = "text";

xfa.resolveNode

Mit diesem Schlüsselbegriff wird nach einem Objekt selber gesucht. Das Objekt muss also eindeutig in der Hierarchie liegen und darf kein zweites Mal so in einer anderen Ebene benannt werden.

Da hier kein Pfad angegeben wird, ist eine Suche notwendig. Generell ist zu lesen, dass es an die Performance gehen kann. D.h. bei großen und komplexen Formularen so wenig wie möglich zu verwenden.

Beispiel mit JavaScript:

 xfa.resolveNode(testvarialbe).rawValue = "test";

Quelle

Dieser Eintrag wurde erstellt als das Wiki noch nicht öffentlich war. Um ein besseres Verständnis davon zu bekommen, wurde folgendes mit eigenen Worten wiedergeben. Die inhaltlichen Infos stammen von: