F-Script - GetInfoScriptArg

GetInfoScriptArg

Der Service GetInfoScriptArg ermöglicht das Abfragen der Argumente aus der Subroutine /GetInfoScriptArg eines F-Scripts.
Bei alten F-Scripts können Sie über den Service GetInfoScriptArg die Argumente der Subroutine /ApplicationServerArguments abfragen.
Achtung
Achtung
Beachten Sie, dass die Verwendung von /ApplicationServerArguments nicht mehr empfohlen wird. Wir empfehlen, bestehende F-Script nach Möglichkeit auf die neue Funktionalität umzuschreiben.
Die Rückgabe der Argumente aus /GetInfoScriptArg muss mittels XFAS erfolgen. Die Struktur der Rückgabe (-Spalten) muss dabei strikt eingehalten werden.
Der grosse Vorteil (Funktionalität) der Subroutine /GetInfoScriptArg ist, dass Sie Daten (beispielsweise ein Datum) dynamisch ermitteln und dem Anwender zur Laufzeit korrekt vorschlagen können.
Im Falle von Auswertungen führt OpaccERP BackOffice die notwendigen Services automatisch aus und stellt die Script-Argumente im BC 84220 dar. Der Zugriff auf die zur Laufzeit vom Anwender eingegebenen Werte, erfolgt dann über den XCNT-Befehl.
Abfragen des aktiven BO
Innerhalb der Subroutine /GetInfoScriptArg können Sie über den XCNT-Befehl das aktive BO abfragen.
Wichtig
Wichtig
Die Subroutine /GetInfoScriptArg wird ein zweites Mal durchlaufen, wenn die Argumente byName abgefragt werden.
Innerhalb der Subroutine /GetInfoScriptArg dürfen deshalb für Bedingungen keine F-Script Attribute (z.B. «ADRNR») verwendet werden.
Je nach Komplexität der Subroutine sollten deshalb die Argumente byNumber abgefragt werden. Dann wird die Subroutine kein zweites Mal durchlaufen.
Die Verwendung von F-Script Attributen für den Vorgabewert eines Arguments, ist kein Problem.
Damit der Interpreter zur Laufzeit auf das aktive BO zugreifen kann, stehen folgende Befehle zur Verfügung welche die jeweiligen Informationen liefern. Verwenden Sie diese Befehle um Bedingungen (z-Bedinung / s-Bedingung etc.) zu formulieren.
# BO-Typ des aktiven BO:
«XCNT(boTypes)»

# BoId des aktiven BO:
«XCNT(<boType>)»

# Alternativ können Sie auch folgende Befehle verwenden:
# BO-Typ
«XCNT(arg:BoType)»

# BoId
«XCNT(arg:BoId)»
Wichtig
Wichtig
Damit diese Funktionalität genutzt werden kann, müssen folgende Voraussetzungen erfüllt sein:
Bei der Auswertung muss in den Eigenschaften der Selektion (BC 84120) die Option Aktives BO verwenden gesetzt sein.
Zur Laufzeit muss ein entsprechendes BO verfügbar sein (korrekter Kontext).
Das bei der Auswertung hinterlegte F-Script muss ein per BoTyp/BoId übergebenes BO unterstützen (SupportsBoArgs=1 in der Subroutine /GetInfoScript).
Argumente von GetInfoScriptArg
Wichtig
Wichtig
Die Schreibweise ist case-sensitive!
  Argument Beschreibung
1
Script
F-Script-Name
2
Argument
Argument welches abgefragt werden soll. (Siehe Rückgabe-Objekte: 1 - Argument)
Per Default werden alle Argumente zurückgegeben.
3
Rückgabe-Objekt
Rückgabe-Objekt(e) mit Komma getrennt oder alle (mit *+)
Beschreibung siehe Tabelle unten.
4
Sprache
Nummer der Beschriftungssprache (z.B. 54 für Englisch).
Steuert die Sprache in welcher die Rückgabe-Objekte Name, ShortName und Info zurückgegeben werden.
Attribute (Rückgabe-Objekte) von GetInfoScriptArg
Wichtig
Wichtig
Die Schreibweise ist case-sensitive!
  Attribut Beschreibung
1
Argument
Name bzw. eindeutiger Bezeichner des Arguments.
Wichtig
Wichtig
Dieses Attribut ist zwingend!
2
StateCd
Status-Code des Arguments (aktiv/passiv). Wird dazu verwendet, das Argument in OpaccERP BackOffice darzustellen.
Mögliche Werte: 0, 1
  • 0 - Gesperrt
    Das Argument ist für den Anwender nicht sichtbar. Ein allfällig gesetzter Wert wird dabei trotzdem in das Script übergeben.
  • 1 - Aktiv (Default)
    Das Argument ist für den Anwender sichtbar. Es können Werte erfasst werden. Diese werden in das Script übergeben.
3
DataTypeCd
Datentyp des Arguments. (A, X, R, N, H, etc.)
Wichtig
Wichtig
Das Argument ist zwingend!
Hinweis
Hinweis
Sie können ein Argument mit DataTypeCd=H als Zeit definieren. Das Argument wird im UI dann als Zeit-Attribut dargestellt: hh:mm
Beispiel
«XFAS(heads=Argument,StateCd,DataTypeCd,Format,RelationshipCd,RelatedObject)»
«XFAS(heads=RelatedIndex,RelatedConstraint,DefaultValue,EntryMode,WithPrevious,MlsKey)»
«XFAS(cells=MyArg,1,H,,0,,,,,0,0,DataType.H)»
4
Format
Format des Arguments in Abhängigkeit des Datentyps.
Beispiele:
Bei DataTypeCd = N: 6.2
Bei DataTypeCd = A: 30
Wichtig
Wichtig
Das Argument ist zwingend!
5
RelationshipCd
Beziehung zu Business-Objekt oder Code-Tabelle. Mögliche Werte:
  • 0 - Keine Beziehung
  • 1 - BO-Beziehung zwingend
    Die Eingabe bezieht sich auf ein BO. Das angegebene BO muss existieren. Ansonsten wird dem Anwender eine Fehlermeldung angezeigt.
  • 2 - BO-Beziehung optional
    Die Eingabe bezieht sich auf ein BO. Das angegebene BO muss nicht existieren (optional).
  • 3 - Code-Beziehung (Code-Tabelle) zwingend
    Die Eingabe bezieht sich auf eine Code-Tabelle. Der angegebene Code (Wert) muss existieren. Ansonsten wird dem Anwender eine Fehlermeldung angezeigt.
  • 4 - Code-Beziehung (Code-Tabelle) optional
    Die Eingabe bezieht sich auf eine Code-Tabelle. Der angegebene Code (Wert) muss nicht existieren (optional).
  • 5 - Bereichs-Beziehung (Range)
  • 7 - ApsKeyword-Beziehung
  • R - Result-Objekt-Beziehung
  • F - Filter-Beziehung
  • S - Beziehung zu Attribut/Wert Paar
  • V - VirtualAttribut-Beziehung
  • I - Installations-Datei-Beziehung
    Mittels RelationshipCd = I können Sie Referenzen auf Dateien innerhalb unserer Installations-Verzeichnisse zurückgeben. Sie müssen dafür als RelatedObject eines unserer Installations-Verzeichnisse angeben. Siehe RelatedObject.
  • J - Datei-Referenz zu File-Storages. (Dateien innerhalb der OXAS Dateispeicher.)
    Wird ein Argument mit RelationShipCd=J definiert, erscheint im Start-Dialog (BC 99009) beim entsprechenden Script-Argument ein Button. Ein Klick auf den Button öffnet den Dialog zum Auswählen einer Datei aus dem via RelatedObject definierten OXAS Dateispeicher.
  • 1S - Mehrere Einträge einer freien Hilfstabelle (BO: FreeTableItem)
    Sie müssen dafür als RelatedObject das BO-Attribut FreeTableItem.Value angeben.
6
RelatedObject
Referenziertes Objekt.
Beispiel: Addr.Number wenn RelationshipCd=1 - Referenziert damit auf das BO: Addr
Sie können Referenzen auf Dateien innerhalb unserer Installations-Verzeichnisse zurückgeben. Sie müssen dafür den RelationshipCd auf I setzen. Siehe RelationShipCd. Als RelatedObject können Sie dann eines unserer Installations-Verzeichnisse angeben. Dabei können Sie die Nummer (CodeValue) oder den Namen (CodeId) verwenden.
Das ist insbesondere dann hilfreich, wenn Sie innerhalb eines F-Scripts eine Datei auswählen möchten, die anschliessend vom F-Script verarbeitet wird. Wird ein Script-Argument in der Subroutine /GetInfoScriptArg mit RelationShipCd=I definiert, wird im Start-Dialog (BC 99009) beim entsprechenden Script-Argument ein Launcher (Button) angezeigt. Ein Klick auf den Launcher (Button) öffnet dann den Dialog zum Öffnen/Auswählen einer Datei.
CodeValue
CodeId
11
TX
12
IP
13
TMP
21
OFFICE
22
REPORTS_TEMPLATES
23
FONTS
31
BOF_SCRIPTS
32
F_SCRIPTS
33
PRINTER_DEF
7
RelatedIndex
Für die Referenz verwendeter Index.
Beispiel: 1 wenn das BO Addr nach Adress-Nr. referenziert werden soll.
8
RelatedConstraint
Fixierung 1. Segment gemäss RelatedIndex.
9
ConstraintType
Wird hier der Wert Filter erfasst, wird der Inhalt von RelatedConstraint als Filter behandelt.
10
DefaultValue
Startpunkt
Beispiel: 1070 als Startpunkt für die Adresse (Addr.Number)
11
EntryMode
Eingabemodus
Mögliche Werte: 0, 1, 2
0 - Default
1 - Zwingend
2 - Gesperrt
12
WithPrevious
Mögliche Werte: 0, 1
Ist der Wert = 1, wird das Argument auf derselben Zeile dargestellt, wie das vorhergehende. Damit lassen sich von/bis-Abfragen besser darstellen.
13
Name
Text aus MLS-Text.
14
ShortName
Kurztext aus MLS-Text.
15
Info
Info-Text aus MLS-Text.
16
CheckExpression
Mit Hilfe der CheckExpression Funktionalität können Sie Eingabewerte prüfen.
Beispiel: Es soll geprüft werden, ob der eingegebene Wert >= 1000 ist.
... 
«XFAS(heads=Argument,StateCd,DataTypeCd,Format,CheckExpression,RelationshipCd,RelatedObject,RelatedIndex,RelatedConstraint,DefaultValue,EntryMode,WithPrevious,MlsKey)» 
# 
# Argument-Definition 
«XFAS(cells=Value,1,N,8.0,Value>=1000,0,,,,,0,0,MyArg1)» 
... 
Beispiel
/GetInfoScriptArg
«XFAS(heads=Argument,StateCd,DataTypeCd,Format,RelationshipCd,RelatedObject)»
«XFAS(heads=RelatedIndex,RelatedConstraint,DefaultValue,EntryMode,WithPrevious,MlsKey)»
«XFAS(cells=MyArg9,1,D,,0,,,,«TODAY\D10»,0,0,DataType.D)»
/
Wenn Sie nun aufgrund der obigen Deklaration den DefaultValue sowie die MLS-Texte von MyArg9 abfragen wollen, führen Sie den Service folgendermassen aus: (Beispiel aus der OpaccOXAS LiveDocumentation)
LiveDoc_01.jpg
Beispiele mit RelatedConstraint
Hier wird bei Verkaufsdokumenten mit einer Verknüpfungsbegrenzung (RelatedConstraint) auf die Dokumentstufe (SalDoc.SalProcLevelCd) gearbeitet.
/GetInfoScriptArg
# Die Rückgabe-Spalten (Clumns) sind zwingend einzuhalten!
«XFAS(heads=Argument,StateCd,DataTypeCd,Format,RelationshipCd,RelatedObject)»
«XFAS(heads=RelatedIndex,RelatedConstraint,DefaultValue,EntryMode,WithPrevious,MlsKey)»
# Werte für 1. Argument
«XFAS(cells=DokumentNr,1,A,,1,SalDoc.Number,1,SalDoc.SalProcLevelCd=3,,0,0,RelIndex)»
/
Hier sollen nur Adressen angezeigt/ausgewählt werden können, bei denen Addr.City = Kriens
/GetInfoScriptArg
«XFAS(heads=Argument,StateCd,DataTypeCd,Format,RelationshipCd,RelatedObject)»
«XFAS(heads=RelatedIndex,RelatedConstraint,DefaultValue,EntryMode,WithPrevious,MlsKey)»
«XFAS(cells=Lucern,1,A,100,1,Addr.Number,3,Addr.City=Kriens,,0,0,RelIndex)»
/