Données et logique

Cette page explique comment relier un template à des données : variables, jeux d'exemple, contrat, tableaux, conditions, répétitions et sous-templates, sans écrire de code.

Variables

Une variable affiche une donnée transmise au moment du rendu : {{ customer.name }} affiche le nom du client, {{ invoice.number }} le numéro de facture. Le chemin suit la structure des données, avec un point entre chaque niveau.

Insérer une variable dans un texte

  1. Placez le curseur dans le champ Texte d'un paragraphe, d'un titre ou d'une cellule.
  2. Tapez {{ (ou cliquez sur Insérer une variable) : une puce s'ouvre avec une complétion des chemins connus (données du jeu courant, contrat, éléments des répétitions qui entourent le texte).
  3. Choisissez le chemin, puis tapez }} ou validez. Taper {{ total }} d'une traite crée aussi une puce.

La puce affiche la valeur du jeu d'exemple courant ou l'expression, selon la bascule Afficher les valeurs des variables / Afficher les expressions. Une syntaxe incorrecte est signalée (Expression invalide : …).

Après |, la complétion propose des filtres de format :

{{ invoice.issueDate | date('dd/MM/yyyy') }}
{{ items | sum('total') | currency('EUR') }}
{{ customer.name | upper }}

Panneau Variables

L'onglet Variables liste tous les chemins de données utilisés par le template, quelles que soient les données.

Panneau Variables : chemins, types, valeurs du jeu courant et usages

  • Chaque variable montre son type (Texte, Nombre, Oui/non, Date, Liste, Groupe de champs, Image…), sa valeur dans le jeu courant (ou absente) et son nombre d'usages ; un clic sur un usage sélectionne l'élément concerné.
  • Glissez une variable dans un texte, ou cliquez sur Insérer dans le texte. Sans texte en cours d'édition, la variable est ajoutée dans un nouveau paragraphe.
  • Pour une variable qui n'existe pas encore, saisissez son chemin dans Nouvelle variable (ex. client.nom), puis Ajouter dans le texte.
  • Renommer réécrit toutes les expressions du template qui utilisent la variable. Les jeux d'exemple ne sont pas modifiés : pensez à les mettre à jour.

Jeux d'exemple

L'onglet Données gère les jeux d'exemple du brouillon. La preview utilise celui qui est choisi dans Jeu d'exemple.

Onglet Données : liste des jeux et formulaire généré depuis le contrat

  • Nouveau jeu crée un jeu à partir du contrat, avec des valeurs proposées (l'exemple du contrat s'il existe, sinon une valeur du bon type : un titre, 1, la date du jour, un élément par liste).
  • Le menu Actions du jeu propose Dupliquer, Renommer (aussi par double clic) et Supprimer.
  • Le Formulaire est généré depuis le contrat : champs texte, nombre, date, oui/non, listes d'éléments avec Ajouter un élément. Vous pouvez aussi modifier le jeu en JSON. Les champs absents du contrat sont conservés.
  • Les écarts entre le jeu et le schéma s'affichent sous les champs concernés (N écarts avec le schéma).

Chaque modification est enregistrée automatiquement, sans passer par l'historique d'annulation. Créez plusieurs jeux pour vérifier les cas différents : client société et client particulier, facture d'une ligne et de trois pages, etc.

Contrat

L'onglet Contrat vérifie en continu que le brouillon peut être publié et montre le schéma des données.

Onglet Contrat : état de la vérification et arbre du schéma des données

Vérification

La vérification est la même que celle de la publication ; elle est relancée peu après chaque modification (Vérifier maintenant la force). Elle affiche Prêt à publier, ou N points à corriger avant de publier :

  • chemins utilisés par le template qui manquent au schéma : Ajouter au schéma les y ajoute ;
  • écarts entre les jeux d'exemple et le schéma : un clic ouvre le jeu concerné ;
  • autres refus (élément incomplet, sous-template introuvable…) ;
  • avertissements, par exemple une police remplacée par une police de la plateforme (voir Polices).

Schéma des données

Sous la vérification, l'arbre du Schéma des données montre chaque champ avec son type, son caractère obligatoire et son titre.

  • Dérivé : le schéma est déduit des expressions du template et des jeux d'exemple.
  • Annoté : dès que vous dépliez un champ et modifiez son Titre, sa Description, son Type, son Exemple ou Obligatoire, le schéma dérivé est copié en schéma annoté. Ce schéma doit ensuite couvrir toutes les données lues par le template.
  • Revenir au schéma dérivé abandonne les annotations.

Les titres, descriptions et exemples apparaissent dans la documentation de la version et dans les SDK générés pour les développeurs.

Tableaux

Insérez un Tableau par la palette. Une fois sélectionné, sa grille s'ouvre sous la preview (Déplier / Replier).

Grille d'un tableau sous la preview, avec ses sections d'en-tête, de lignes et de pied

La grille a trois sections :

  • En-tête · répété en haut de chaque page (Ajouter une ligne d'en-tête) ;
  • Lignes (Ajouter une ligne) ;
  • Pied (Ajouter un pied).

Pour travailler dans la grille :

  • Écrire : double-cliquez sur une cellule ou appuyez sur Entrée ; Échap termine la saisie. Les variables {{ }} s'insèrent comme dans un paragraphe.
  • Sélectionner plusieurs cellules : Maj+clic sélectionne un rectangle ; Fusionner les réunit, Scinder sépare une cellule fusionnée.
  • Lignes et colonnes : Insérer une ligne dessus, Insérer une ligne dessous, Insérer une colonne à gauche, Insérer une colonne à droite, Supprimer ; Passer en en-tête, Passer dans les lignes, Passer en pied.
  • Largeur des colonnes : glissez le bord d'une colonne. Une largeur fixe reste en millimètres ; une largeur proportionnelle est mise à l'échelle.

Le panneau de droite règle l'élément choisi dans la grille : Cellule (Alignement, Vertical, Style de la cellule, Afficher la cellule si), Ligne (Hauteur, Garder avec la suivante, Style de la ligne, Afficher la ligne si), colonne (Largeur, Alignement, Style de la colonne). Les réglages du tableau entier restent dans ses propriétés : Bordure, Marge intérieure des cellules, Style de l'en-tête, Style des lignes, Coupure des lignes, Hauteur des lignes.

Lignes répétées ou conditionnelles

Sélectionnez une ou plusieurs lignes, puis :

  • Répéter ces lignes pour chaque élément d'une liste : une bande teintée Pour chaque … de … encadre les lignes ; dans leurs cellules, lisez les champs de l'élément (par exemple {{ p.valeur }}). Ne plus répéter annule.
  • Afficher ces lignes sous condition : une bande Si … encadre les lignes ; Ajouter des lignes « sinon » ajoute une bande Sinon. Retirer la condition annule.

Sélectionnez une bande pour modifier sa liste ou sa condition dans le panneau de droite.

Tableau depuis une liste

Pour une facture ou un relevé, le Tableau de données produit une ligne par élément d'une liste des données (par exemple une ligne par article de items).

Propriétés d'un tableau depuis une liste : liste, colonnes proposées et ligne de totaux

  1. Insérez un Tableau de données par la palette.
  2. Dans ses propriétés, gardez Une ligne par élément d'une liste et choisissez la Liste des données : les listes du jeu courant et du contrat sont proposées, avec leur nombre de lignes.
  3. Sous Colonnes depuis les champs des éléments, cochez les champs voulus, puis cliquez sur Créer N colonne(s). Un nombre est aligné à droite et formaté ; une date est affichée au format dd/MM/yyyy. Si le tableau a déjà des colonnes, Sculdoc demande confirmation avant de les remplacer.
  4. Facultatif : Texte si la liste est vide (par exemple « Aucune ligne »).
  5. Facultatif : activez Ligne de totaux en pied, puis choisissez pour chaque colonne Somme de … (en nombre ou en montant), Nombre de lignes ou Expression personnalisée.

Dans la grille, la ligne modèle apparaît teintée : Modèle de ligne · une ligne par élément de …. Écrivez ses cellules avec les champs de l'élément ; Nom de chaque élément et Nom du rang fixent les noms à utiliser.

Cas avancé : Structure fournie par les données (avancé) laisse les données décrire elles-mêmes les colonnes et les lignes du tableau (structure standard TableSpec), soit lue dans les données (Tableau lu dans les données), soit saisie en JSON (Tableau saisi (JSON)).

Conditions

Tout élément, ligne ou cellule a une propriété Afficher si : l'élément n'apparaît que si la condition est vraie. Exemple : afficher le numéro de TVA seulement si le client est une société.

Constructeur « Afficher si » : clauses donnée, opérateur, valeur et résultat avec le jeu courant

  1. Cliquez sur Ajouter une condition.
  2. Choisissez la Donnée (par exemple customer.type), l'opérateur et la Valeur. Opérateurs : est égal à, est différent de, est renseigné, n'est pas renseigné, est supérieur à, est supérieur ou égal à, est inférieur à, est inférieur ou égal à, contient, est parmi (valeurs séparées par des virgules).
  3. Avec plusieurs clauses, choisissez Toutes les conditions (et) ou Au moins une condition (ou).

Sous le constructeur, le résultat avec le jeu courant s'affiche : Affiché avec le jeu courant ou Masqué avec le jeu courant. Changez de jeu d'exemple pour vérifier l'autre cas.

Écrire une expression passe en mode libre pour une condition plus complexe (parenthèses, calcul) ; Revenir au constructeur revient au mode guidé. Une expression que le constructeur ne sait pas représenter s'ouvre directement en mode libre (Expression avancée : le constructeur ne sait pas la dire.) et n'est jamais réécrite.

Pour afficher un contenu ou un autre, insérez un bloc Condition (catégorie Données et logique) : sa Condition choisit entre le contenu Si vrai et le contenu Sinon.

Répétitions

Une Répétition reproduit son contenu pour chaque élément d'une liste : un paragraphe par contact, un bloc par instrument.

  1. Insérez une Répétition par la palette.
  2. Dans Répéter pour chaque élément de, choisissez la liste (les listes du jeu courant sont proposées).
  3. Donnez le Nom de chaque élément (par exemple contact) et, si besoin, le Nom du rang (facultatif).
  4. Placez le contenu à répéter dans la répétition et utilisez {{ contact.nom }} dans ses textes : la complétion propose les champs de l'élément.

Le panneau indique le nombre de copies avec le jeu courant (par exemple 3 copies avec « facture »). Un Séparateur peut être inséré entre deux copies ; il se modifie dans la structure.

Sous-templates

Un Sous-template insère un autre template publié de votre organisation : bloc de mentions légales commun, pied de courrier, cartouche.

  1. Insérez un Sous-template par la palette.
  2. Dans Template inséré, cliquez sur Choisir un template publié et cherchez-le.
  3. Choisissez la Version épinglée. Le document insère toujours cette version, même si le sous-template en publie une autre ensuite : pour profiter d'une nouvelle version, changez l'épinglage et publiez.
  4. Données transmises : par défaut, le sous-template reçoit les données du document telles quelles et lit ses champs sous leurs propres noms. Activez Choisir les données transmises pour associer chaque champ de son contrat à une donnée du document.

Si le jeu courant ne contient pas une donnée attendue par le sous-template, l'éditeur le signale : la variable correspondante resterait vide.