Zum Hauptinhalt springen
Dieses Beispiel zeigt eine Prüfung von Tabellendaten. Die Regel prüft, ob die Tabellendaten mit dem Wert im Ergebnisfeld übereinstimmen. Die Tabelle hat Spalten mit Preisen und Mengen bestimmter Waren. Die Regel wurde auf der Ebene eines Abschnitts geschrieben, der die Tabelle und das Ergebnisfeld enthält.
[VBScript]
dim autoRule
set autoRule = CreateObject( "AutomationRule.CheckDoc" )
autoRule.CheckResult me.FIELD("cost"), me.FIELD("number"), me.FIELD("Result"), me
[JScript]
 var autoRule = new ActiveXObject( "AutomationRule.CheckDoc" );
autoRule.CheckResult( Field("cost"), Field("number"),
    Field("Result"), this );

Code einer ActiveX-Komponente

Der hier gezeigte Code ist der Code der Klasse CheckDoc aus dem Projekt AutomationRule, die in den oben erwähnten Skripten verwendet wird.
Option Explicit
' Prüft, ob die Tabellendaten mit dem Ergebnis übereinstimmen
' column1 - Preisspalte
' column2 - Mengenspalte
' resultField - Ergebnisfeld (<Gesamtbetrag> oder entsprechendes Feld)
' docObj - zu prüfender Dokumentknoten
Public Sub CheckResult(ByRef column1 As Object, ByRef column2 As Object, _
ByRef resultField As Object, ByRef docObj As Object)
On Error GoTo err_h
Dim costItems AsObject, numItems AsObject
Dim curCost AsDouble, curNum AsLong, sum AsDouble
Dim result AsDouble
Dim i AsLong
Set costItems = column1.Items
Set numItems = column2.Items
' Tabellendaten aufsummieren
    sum = 0
For i = 0 To costItems.Count - 1
        curCost = costItems.Item(i).Value
        curNum = numItems.Item(i).Value
        sum = sum + curNum * curCost
Next
   ' Vergleich des auf die 2. Nachkommastelle gerundeten Ergebnisses
    result = resultField.Value
If (Round(result, 2) = Round(sum, 2)) Then
        docObj.CheckSucceeded = True
Else
        docObj.CheckSucceeded = False
docObj.ErrorMessage = "Tabellendaten stimmen nicht mit dem Ergebniswert überein"
        resultField.Suggest sum
   End If
Exit Sub
err_h:
docObj.ErrorMessage = Err.Description
    docObj.CheckSucceeded = False
End Sub
Der unten angegebene Regelcode prüft, ob der Feldwert einem der Werte in der Liste entspricht. Falls nicht, erscheint ein Regel-Fehler-Flag, und das Feld erhält eine Liste mit vorgeschlagenen Werten. Je nach Prüfergebnis wird das Feld als sicher oder unsicher erkannt markiert.
[VBScript]
'Feldwert speichern
Dim fieldValue
fieldValue = me.Field("Field6").Value
'Werteliste für die Prüfung erstellen
Dim list(5)
dim i
for i = 0 to 4
    list(i) = "2" & i
next
dim success
success = false
'prüfen, ob der Feldwert einem Wert in der Liste entspricht
for i = 0 to 4
if list(i) = fieldValue Then
        success = true
        exit for
end if
next
'abhängig vom Prüfergebnis den entsprechenden Status "sicher erkannt" für das Feld setzen
me.Field("Field6").IsVerified = success
'die Vorschlagsliste für das Feld füllen; ein Vorschlag kann einer der
'geeigneten Werte sein
if success = false then
    for i = 0 to 4
me.Field("Field6").Suggest( list(i) )
    next
end if
'Fehler-Flag setzen
me.CheckSucceeded = success
[JScript]
// Feldwert speichern
var fieldValue = Field("Field6").Value;
// Werteliste für die Prüfung erstellen
var list = new Array(5);
for( i = 0; i < 5; i++ ) {
    list[i] = "2" + i
}
var success = false;
// prüfen, ob der Feldwert einem Wert in der Liste entspricht
for( i = 0; i < 5; i++ ) {
if( list[i] == fieldValue ) {
        success = true;
        break;
}
}
// abhängig vom Prüfergebnis den entsprechenden Status "sicher erkannt" für das Feld setzen
Field("Field6").IsVerified = success;
// die Vorschlagsliste für das Feld füllen; ein Vorschlag kann einer der
// geeigneten Werte sein
if( !success ) {
for( i = 0; i < 5; i++ ) {
        Field("Field6").Suggest( list[i] );
    }
}
// Fehler-Flag setzen
CheckSucceeded = success;
Der unten angegebene Regelcode prüft, ob das geprüfte Feld zugeordnet wurde.
[VBScript]
if me.Field("InvoiceNumber").IsMatched then
 me.CheckSucceeded = true
else
 me.CheckSucceeded = false
 me.ErrorMessage = "Feld InvoiceNumber wurde nicht zugeordnet"
end if
[JScript]
if( Field("InvoiceNumber ").IsMatched ) {
 CheckSucceeded = true;
} else {
CheckSucceeded = false;
 ErrorMessage = "Feld InvoiceNumber wurde nicht zugeordnet";
}
Der unten angegebene Regelcode prüft, ob das Häkchen gesetzt wurde oder nicht
[VBScript]
if me.Field("Page status").Value then
    me.CheckSucceeded = true
else
    me.CheckSucceeded = false
    me.ErrorMessage = "Page status ist nicht markiert"
  me.FocusedField = me.Field(Page status)  ""
end if
[JScript]
if( Field("Page status").Value ) {
    CheckSucceeded = true;
} else {
CheckSucceeded = false;
    ErrorMessage = "Page status ist nicht markiert";
    FocusedField = Field("Page status");
}
Der unten stehende Regelcode durchläuft alle Häkchen in der Gruppe und wählt das erste aus, wenn keines markiert ist. Die Regel ist auf Ebene der Häkchengruppe geschrieben. Alle Häkchen in der Gruppe wurden der Liste der in die Regel aufgenommenen Felder hinzugefügt. Die Gruppe selbst wurde aus der Liste ausgeschlossen. Für das Standardhäkchen (das erste) wurde das ReadOnly-Flag deaktiviert. Wenn die Gruppe keine Häkchen enthält, wird ein Regelfehler-Flag aktiviert.Dieser Beispielcode durchläuft alle in die Regel aufgenommenen Felder. Da im Code keine Feldnamen angegeben sind, kann dieser Code für jede Häkchengruppe verwendet werden.
[VBScript]
if me.Fields.Count = 0 then
    me.CheckSucceeded = false
    me.ErrorMessage = "There are no checkmarks in the group"
else
    dim isChosen, i
    isChosen = false
for i = 0 to me.Fields.Count - 1
       if me.Fields.Item( i ).Value then
            isChosen = true
            exit for
end if
next
if Not isChosen then
        me.Fields.Item(0).Value = true
    end if
me.CheckSucceeded = true
end if
[JScript]
if( Fields.Count == 0 ) {
    CheckSucceeded = false;
    ErrorMessage = "There are no checkmarks in the group";
} else {
    var isChosen = false;
    var i;
for( i = 0; i < Fields.Count; i++ ) {
        if( Fields.Item( i ).Value ) {
            isChosen = true;
            break;
}
}
if( !isChosen ) {
        Fields.Item(0).Value = true;
    }
CheckSucceeded = true;
}
Der unten stehende Regelcode prüft die Anzahl unsicherer Zeichen im Feld und leert das Feld, wenn die Anzahl unsicherer Zeichen größer oder gleich drei ist. Dies ist ein Autokorrekturskript.
[VBScript]
Dim totQty, suspQty
Dim i
totQty = me.Symbols.Count
suspQty = 0
for i = 0 to totQty - 1
  if me.Symbols.Item(i).IsSuspicious = true then
    suspQty = suspQty + 1
  end if
next
if suspQty >= 3 then
  me.Text = ""
end if
[JScript]
var susp, qty, strpos, i, SC, strposPrev
strposPrev = 1
qty = 0
SC = "1"
susp = SuspiciousSymbols
for ( i = 0; i < susp.length; i++) {
    strpos = susp.indexOf (SC,i)
if ((strpos != strposPrev) && (strpos != -1)) {
      qty = qty + 1
      strposPrev = strpos
    }
}
if (qty >= 3) {
  text = ""
}
Das Skript ersetzt ”+” durch ”&”, ohne Informationen über Regionen und Verifizierungs-Flags zu verlieren. Dies ist ein Autokorrekturskript.
[VBScript]
Dim totQty
Dim i
totQty = me.Symbols.Count
for i = 0 to totQty - 1
if me.Symbols(i).Symbol = "+" then
    me.Symbols(i).Symbol = "&"
end if
next
Prüft, ob die auf der Kontrollseite angegebene Anzahl von Dokumenten mit dem Bestand im Batch und mit der Anzahl der tatsächlich verarbeiteten Dokumente übereinstimmt. Wenn die Zahlen nicht übereinstimmen, wird ein Fehler zurückgegeben.
[VBScript]
dim DQty
dim i
for i = 0 to me.Batch.Documents.Count - 1
  if me.Batch.Documents.Item(i).DefinitionName = "Inv" then
    DQty = me.Batch.Documents.Item(i).IndexedItemValue("DocQty")
    exit for
end if
next
dim AcQty
AcQty = me.Batch.Documents.Count
if acqty <> DQty then
  me.CheckSucceeded = false
  me.ErrorMessage = "Incorrect number of documents in the batch:" & " " & AcQty& ". " & "Expected number:" & " " & DQty & "!"
end if
[JScript]
for ( i = 0; i < [Batch.Documents.Count - 1]; i++ ) {
var TemplName = Batch.Documents.Item(0).DefinitionName;
  if (TemplName = "Inv") {
    var DQty = Batch.Documents.Item(i).IndexedItemValue("DocQty");
    break ;
}
}
var AcQty = Batch.Documents.Count -1
if (AcQty != DQty) {
    CheckSucceeded = false;
    ErrorMessage = "Incorrect number of documents in the batch:" + " " + AcQty + "." + "Expected number:" + " " + DQty +"!" ;
}
Dieses Skript zählt die Anzahl der Seiten in einem Dokumentensatzabschnitt und gibt einen Fehler aus, wenn der Satz ein Element eines unbekannten Typs enthält.
int subDocumentsCount = 0;
int pagesCount = 0;
IBatchItem asBatchItem = Context.Document.AsBatchItem;
IBatchItems items = asBatchItem.ChildItems;
foreach (IBatchItem item in items)
{
if ( item.Type == TBatchItemType.BIT_Page )
{   pagesCount ++;  }
else if( item.Type == TBatchItemType.BIT_Document )
{   subDocumentsCount ++; }
else
{
Context.CheckSucceeded = false;
Context.ErrorMessage = "Unknown type of element in set";
}
}
Context.Field("Field").Text = subDocumentsCount.ToString() + " " + pagesCount.ToString();
Das Skript zerlegt die Adresse in folgende Komponenten: Postleitzahl, Land, Stadt und Straße. Das Skript wird auf einen Teil des Quellfelds angewendet.
[C# .Net]
//-----------------------------------------
var collectionName = "";
IFieldExtractor extractor = Context.GetFieldExtractor();
extractor.ParseAddress();
var city = extractor.ExtractedObjects( collectionName, "NerCity" );
var country = extractor.ExtractedObjects( collectionName, "NerCountry" );
var zip = extractor.ExtractedObjects( collectionName, "NerZipCode" );
var street = extractor.ExtractedObjects( collectionName, "NerStreet" );
for( var i = 0; i < city.Count; i++ ) {
extractor.PutSpanToField( city.Item(i).Span, Context.Field("City") );
}
for( var i = 0; i < country.Count; i++ ) {
extractor.PutSpanToField( country.Item(i).Span, Context.Field("Country") );
}
for( var i = 0; i < zip.Count; i++ ) {
extractor.PutSpanToField( zip.Item(i).Span, Context.Field("ZIP") );
}
for( var i = 0; i < street.Count; i++ ) {
extractor.PutSpanToField( street.Item(i).Span, Context.Field("Street") );
}
//-------------------------------------