- Vous pouvez définir l’emplacement des éléments par rapport aux régions des champs détectés lors de l’application du FlexiLayout principal du projet de factures.
- Les identifiants des fournisseurs et des unités commerciales peuvent être utilisés dans les requêtes adressées au jeu de données de la Document Definition.
- Les listes de mots-clés et les autres paramètres d’un FlexiLayout peuvent être exportés vers un fichier XML, ce qui permet de les modifier sans avoir à modifier le FlexiLayout ni la Document Definition.
Créer un FlexiLayout supplémentaire
Cette commande n’est disponible que pour les projets FlexiCapture stockés sur votre ordinateur. Si vous utilisez la version Distributed de FlexiCapture et que le projet est stocké sur le serveur, téléchargez-le d’abord sur votre ordinateur en cliquant sur Export Project… dans le menu Project.
Le suffixe du projet ABBYY FlexiLayout Studio indique la version de la Document Definition au moment de la création du projet.
| Arborescence | Nœud | Description |
|---|---|---|
| SearchElements | CommonBlockRegions | Ce nœud contient des éléments correspondant à tous les champs de la Document Definition. Les coordonnées de toutes les régions de blocs détectées lors de l’application des FlexiLayouts à chaque document dans FlexiCapture sont enregistrées dans le projet ABBYY FlexiLayout Studio. Par défaut, les régions ayant ces coordonnées sont attribuées à des éléments portant le même nom que les champs de la Document Definition. Cela permet de les utiliser pour définir la position relative des éléments et créer de nouveaux éléments. |
| SearchElements | CustomSearchElements | Ce nœud contient des exemples d’éléments. Ils sont désactivés par défaut afin d’éviter toute interférence lors de l’application du FlexiLayout. DataSetRequestSample — Exemple de requête vers le jeu de données des fournisseurs et des unités commerciales stocké dans la Document Definition. Ce jeu de données inclut les identifiants des fournisseurs et des unités commerciales. |
Ajouter un champ à un FlexiLayout supplémentaire
- Pour décrire la logique de recherche d’un champ, créez un bloc avec un nom unique.
- Pour modifier la logique de recherche d’un champ qui existe déjà dans la Document Definition, créez un bloc portant le même nom.
Ajouter des pages à un FlexiLayout supplémentaire
- Vous pouvez exporter des lots FlexiCapture uniquement vers des projets ABBYY FlexiLayout Studio créés en sélectionnant Outils → Export Batch to FlexiLayout Studio → Create New FlexiLayout Studio Project….
- Lorsque vous exportez un lot FlexiCapture vers ABBYY FlexiLayout Studio, un nouveau lot correspondant à ce lot est créé dans ABBYY FlexiLayout Studio.
- Si la nouvelle Document Definition comporte plus de champs que la Document Definition utilisée pour le projet ABBYY FlexiLayout Studio, le journal d’exportation contient un avertissement pour chaque champ supplémentaire.
- Pour que le programme exporte les champs supplémentaires, ajoutez, pour chaque champ supplémentaire, un bloc portant le même nom dans le nœud CommonBlockRegions de l’arborescence SearchElements.
Effectuer des requêtes sur les jeux de données à partir de la Document Definition
| Type | Description |
|---|---|
| NamedValue | Une valeur nommée. |
| Constructeur | |
NamedValue( String, String ) | |
| Méthodes | |
String Name() | Renvoie le nom d’une valeur nommée. |
String Value() | Renvoie la valeur d’une valeur nommée. |
| NamedValueArray | Un tableau de valeurs nommées. |
| Constructeurs | |
NamedValueArray() | |
NamedValueArray( NamedValue namedValue ) | |
| Méthodes | |
Int Count() | Renvoie le nombre total d’éléments du tableau. |
NamedValue GetAt( Int index ) | Renvoie l’élément correspondant à l’indice spécifié. |
Void Add( NamedValue namedValue ) | Ajoute une valeur nommée au tableau. |
Void Add( NamedValueArray namedValueArray ) | Ajoute un tableau de valeurs nommées à un autre tableau de valeurs nommées. |
Void InsertAt( Int index, NamedValue namedValue ) | Insère la valeur nommée à l’indice spécifié. |
Void DeleteAll() | Supprime tous les éléments du tableau. |
Void DeleteAt( Int index ) | Supprime l’élément à l’indice spécifié. |
Int FindByName( String name ) | Renvoie la position de la valeur nommée name. |
Fonctions
- Le chemin vers la Document Definition et le nom du jeu de données sont utilisés pour accéder au jeu de données lorsque vous travaillez avec un FlexiLayout dans ABBYY FlexiLayout Studio.
- Une fois un FlexiLayout compilé ajouté à une Document Definition dans FlexiCapture, seul son nom est utilisé pour accéder au jeu de données.
-
Format de connectionString :
Remarque : Séparez les parties du chemin par des doubles barres obliques inverses (
\\). - searchFields — Tableau des noms des colonnes dont les valeurs doivent être récupérées.
-
searchCriteria — Tableau de paires Column-Entry ; renvoie toutes les valeurs s’il est vide.
- Si une requête contient plusieurs valeurs pour un même champ, utilisez l’opérateur OR.
- Si une requête contient plusieurs valeurs, chacune correspondant à un seul champ, utilisez l’opérateur AND.
- Si une requête contient plusieurs valeurs pour un même champ et des valeurs pour plusieurs champs, utilisez l’opérateur OR pour distinguer les valeurs multiples d’un même champ et l’opérateur AND pour combiner les valeurs de différents champs.
| Définition | Description |
|---|---|
Logic TestAccessToFCDataSet( String connectionString ) | Teste la connexion au jeu de données. |
Logic TestFCDataSetSearchCriteria( String connectionString, StringArray searchFields, NamedValueArray searchCriteria ) | Teste les conditions de recherche du jeu de données. |
StringArray FieldNamesOfFCDataset( String connectionString ) | Renvoie une liste de tous les champs du jeu de données, triés par ordre croissant de leur indice. |
StringArray FieldNamesOfFCDataset( String connectionString, StringArray searchFields ) | Renvoie une liste des champs du jeu de données spécifié, par ordre croissant de leur indice. Doit être utilisée avec la fonction RecordOfFCDataset lorsqu’il existe des colonnes complexes. |
Int RecordCountOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria ) | Renvoie le nombre d’entrées du jeu de données spécifiées dans les conditions de recherche. Permet de déterminer combien d’entrées peuvent être renvoyées à l’aide de la fonction RecordOfFCDataset. |
Void PrepareRecordsetOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Prépare les données pour une requête sur le jeu de données. Cette opération doit être effectuée pour chaque nouvel ensemble de conditions de recherche avant d’appeler la fonction RecordOfFCDataset. |
StringArray RecordOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int rowIndex ) | Renvoie un tableau de valeurs de l’entrée portant le numéro rowIndex parmi les résultats renvoyés par une requête sur le jeu de données. Le nombre de valeurs est égal au nombre de champs passés dans searchFields (y compris dans le cas de colonnes complexes). |
Quality ValidateByFCDataSet( String word, String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxErrors, Rational maxErrorsPart, Logic ignoreSpaces = true, Int maxRecordsCount = DefaultMaxRecordsCount ) | Renvoie la qualité de la chaîne word. Accepte les numéros d’indice des champs. Vous pouvez obtenir ces numéros d’indice en indexant la sortie de la fonction FieldNamesOfFCDataset. |
Void SearchTextFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Utilisé pour spécifier des conditions de recherche de mots pour la fonction Static Text. Lorsque cette fonction est appelée, les conditions de recherche existantes sont remplacées par de nouvelles. Accepte les numéros d’indice de champ. Vous pouvez obtenir ces numéros d’indice en indexant la sortie de la fonction FieldNamesOfFCDataset. |
Void RegularExpressionFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Utilisé pour spécifier des conditions de recherche à l’aide d’expressions régulières pour la fonction CharString. Lorsque cette fonction est appelée, les conditions de recherche existantes sont remplacées par de nouvelles. Accepte les numéros d’indice de champ. Vous pouvez obtenir ces numéros d’indice en indexant la sortie de la fonction FieldNamesOfFCDataset. |
Rechercher des lignes à partir d’une colonne dans une base de données externe sur une image
Lister les colonnes
Utilisez FieldNamesOfFCDataset pour obtenir une liste des colonnes triées par ordre croissant de leur indice.
Trouver l’indice de la colonne
Déterminez le numéro d’indice de la colonne dans laquelle vous devez rechercher des données.
Rechercher dans une image des entrées issues de plusieurs colonnes
Lister les colonnes
Créez un tableau des noms des colonnes dans lesquelles vous devez trouver des données.
Créer le filtre
Créez un tableau de conditions de filtre pour filtrer les données du jeu de données.
Compter les entrées
Déterminez le nombre d’entrées renvoyées à l’aide de la fonction RecordCountOfFCDataset.
Préparer la requête
Préparez les données de la requête à l’aide de la fonction PrepareRecordsetOfFCDataset.
Lire chaque record
Parcourez tous les records et récupérez le tableau de chaque record à l’aide de la méthode RecordOfFCDataset.
Considérations supplémentaires concernant les colonnes complexes
-
La fonction FieldNamesOfFCDataset renvoie un tableau contenant plusieurs occurrences du nom de la colonne complexe. Le nombre d’occurrences est identique au nombre d’instances de colonnes dans une base de données externe encodée.
Exemple :
{VendorId, VATID, Name, Name, Name, City}. Dans ce cas, la base de données externe contient trois colonnes pour l’unique colonne complexe Name dans le jeu de données. - Si SearchCriteria contient une condition pour un champ correspondant à une colonne complexe (comme dans l’exemple ci-dessus), cette condition est utilisée pour vérifier toutes les instances de cette colonne.
-
Si searchFields contient une condition pour un champ correspondant à une colonne complexe (comme dans l’exemple ci-dessus), le résultat contient le tableau des valeurs de chaque instance de colonne.
Par exemple, si vous demandez les éléments suivants pour
{VendorId, VATID, Name, Name, Name, City}: - Vous pouvez obtenir la liste des colonnes renvoyées en passant le tableau searchFields à la fonction FieldNamesOfFCDataset.
