Scripting (AdobeForms)

Aus SAP Wiki ツ


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:

<syntaxhighlight lang="javaScript" line start="1">

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: