L’utilisation de tableaux dans les documents 4D Write Pro est plus fréquente, d’autant plus qu’il est possible de leur associer une source de données, qui alimente automatiquement leurs lignes!
Lorsque le nombre de lignes devient plus important, il est courant que ces tableaux soient automatiquement divisés en plusieurs parties pour permettre un saut de page ou de colonne. Dans cette situation, il est parfois pratique d’insérer (automatiquement !) une ligne de « sous-total » au bas de chaque partie des tableaux respectifs. Oui, c’est vrai, c’est possible dans 4D v19 R7 ?
Base de données de démonstration
Une image vaut mille mots.
Une image vaut toujours mieux qu’une longue explication. Voici ce que nous voulons obtenir :
Comme vous pouvez le voir, chaque partie de tableau – sauf la dernière – contient une ligne supplémentaire utilisée ici pour afficher un sous-total.
Ceci est souvent nécessaire, parfois même légalement requis, lors de l’édition de longues factures, par exemple.
UNE LIGNE dans le modèle, autant que nécessaire dans le document final.
Comme mentionné dans l’introduction, cette fonctionnalité est disponible pour tous les tableaux. Néanmoins, elle n’est prise en compte que lorsque les tableaux sont associés à une source de données (une collection ou une sélection d’entités). Une fois cette propriété activée, la ligne qui suit immédiatement la ligne « répétée » deviendra la ligne de report.
L’activation de cette propriété peut se faire via l’interface…
Dans les deux interfaces (barre d’outils et barre latérale), le menu du tableau ( ) contient un nouvel élément, « Bottom carry over row ».
… Ou par programmation
WP SET ATTRIBUTES($table ; wk bottom carry over row ; True | False)
DUPLIQUÉE OU NON ?
Il est essentiel de comprendre que cette ligne, unique dans le modèle, sera dupliquée aussi souvent que nécessaire une fois le document évalué.
Notez que cela ne sera pas nécessaire si le tableau « tient » dans un seul bloc. Dans ce cas, la ligne de report ne sera pas représentée dans le document évalué.
Sinon, elle sera insérée à la fin de chaque bloc, sauf le dernier. Logiquement, la dernière partie du tableau partagé ne devrait pas contenir un sous-total mais un « Grand Total ». C’est pourquoi, dans le modèle, la ligne de report n’est pas la dernière mais est suivie des dernières lignes du tableau.
LE CONTENU DES LIGNES DE REPORT
Comment définir le contenu des cellules de cette ligne de report ?
Comme vous l’avez peut-être deviné, un nouvel attribut est né : previousItems, qui peut être utilisé comme suit :
This.previousItems.sum("price")
This.previousItems renvoie, selon la source de données de la table, soit une collection, soit une sélection d’entités.
Cet ensemble contient tous les éléments qui ont déjà été évalués sur la page actuelle et les précédentes. Vous pouvez appliquer toutes les fonctions disponibles (min/max/sum/etc.) pour les collections ou les sélections d’entités !
Notez que si This.previousItems est principalement conçu pour être utilisé dans les lignes de report, son utilisation n’est pas limitée à ce contexte particulier. Il peut être utilisé n’importe où dans le tableau (sauf les en-têtes) avec des valeurs différentes dans chaque contexte.
Conclusion
Cette nouvelle propriété permet de se débarrasser du code complexe et d’enrichir les tableaux lors des sauts de page automatiques.
Profitez de la création de jolis modèles et évitez le codage complexe ! Et comme toujours, vos commentaires sont très appréciés. Participez à la discussion sur le forum 4D.
De plus amples informations sur les lignes de report peuvent être lues dans la documentation.