4D Write Pro : Les rangs de report sont disponibles !

Traduit automatiquement de Deepl

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.

blank

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 ».

 

blankblank

… 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.

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.