Warum Aufrufe eines nicht erkannten optionalen Gruppenelements fehlschlagen
Vermeiden Sie es, für Gruppenelemente das Feld Optional element zu aktivieren. Der Grund dafür ist: Wenn das Gruppenelement als Optional element markiert ist und nicht erkannt wird (seine Quality ist niedriger als die Quality einer Nullhypothese oder für es wird die FunktionDontfind() aufgerufen), führen Aufrufe seiner Subelemente zu Fehlern. Das liegt daran, dass in einer Gruppe mit einer Nullhypothese keine Hypothesen für Subelemente gebildet werden.
Um diesen Fehler zu vermeiden, müssen Sie zuerst das Gruppenelement prüfen. Wenn die IsNull-Prüfung True zurückgibt, greifen Sie auf keines der Subelemente zu.
Wann ein optionales Gruppenelement nützlich ist
Ein optionales Gruppenelement und seine Nullhypothese werden benötigt, wenn die gesamte Gruppe von Feldern auf dem Bild nicht vorhanden ist und eine Suche danach daher keinen Zweck hat. Sie können die Suche nach den Elementen beschleunigen, indem Sie für das Gruppenelement die MethodeDontFind() aufrufen.
Hier bedeutet „aufrufen“, Code in einem beliebigen Abschnitt auf der Registerkarte Advanced oder in den Blockeigenschaften im Fenster Expression zu schreiben. Wenn beim Festlegen der Suchbedingungen in Beziehung auf die Eigenschaften eines Gruppenelements zugegriffen wird, erfolgt die
IsNull-Prüfung automatisch. Das sehen Sie, wenn Sie auf der Registerkarte Advanced auf Code klicken.Das Beispielprojekt GroupSample.fsp
Dies wird im ProjektGroupSample.fsp veranschaulicht (Ordner %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Optional Group).
Im Dialogfeld „Eigenschaften“ des Gruppenelements InvoiceRequisiteGroup ist das Kontrollkästchen Optional element aktiviert.
Auf der Registerkarte Advanced enthält der Abschnitt Advanced pre-search relations den folgenden Code:
Den Fehler mit der undefinierten Hypothese reproduzieren und beheben
Führen Sie den Abgleich des FlexiLayouts für beide Seiten im Batch aus. Für Seite 1 wird das Verfahren erfolgreich ausgeführt, doch wenn das FlexiLayout auf Seite 2 angewendet wird, zeigt FlexiLayout Studio folgende Fehlermeldung an:Dontfind() eine Nullhypothese für das Gruppenelement InvoiceRequisiteGroup erzeugt. Dadurch hat der Code auf eine nicht vorhandene Hypothese zugegriffen.
Der korrekte Code muss wie folgt aussehen.
Wenn Sie den Code im Abschnitt Advanced pre-search relations auskommentieren und das Kontrollkästchen neben der ähnlichen Suchbedingung des Elements TotalSumHeader im Abschnitt Beziehungen aktivieren, zeigt ein Klick auf Code auf der Registerkarte Advanced, dass der kompilierte Code die Prüfung
IsNull bereits enthält.