Documentation générateur d’états KWISATZ
Générateur d’états FastReport
FastReport permet de personnaliser les factures, listes, étiquettes, statistiques, Tickets Z, courriers et états libres de KWISATZ. Un modèle associe une famille fonctionnelle, des sources de données, des variables de sélection, une mise en page et éventuellement des requêtes ou scripts.
Réponse directe
Conseil technicien général
1. Licence et disponibilité
La dépendance de licence mentionnée dans ce document provient des sources. Sa disponibilité peut varier selon la version, la sérialisation, le partenaire ou l’installation ; faites-la valider techniquement avant de modifier l’environnement.
2. Protection des données
3. Comprendre les deux moteurs d’états
| Moteur | Nom utilisé dans KWISATZ | Usage |
|---|---|---|
| QuickReport / QRDesign | QRD, QRReport ou ancien générateur | Compatibilité avec les anciens modèles historiques. |
| FastReport | FRX, FR ou nouvelle génération | Nouveaux modèles, scripts, exports et prévisualisation moderne. |
Droits et licence
L’accès à FastReport a historiquement dépendu du Pack caisse (fonctions avancées), puis a été étendu aux Pack caisse (fonctions avancées) et Pack caisse (fonctions avancées). Le module Producteur peut également l’autoriser automatiquement dans les versions documentées. Vérifiez la sérialisation réelle du poste.
4. Extensions des modèles KWISATZ
Les modèles KWISATZ ne sont pas identifiés uniquement par une extension
générique FastReport telle que .fr3.
Le logiciel utilise des extensions numériques métier
correspondant à chaque famille d’impression.
Double générateur
| Famille | Principe |
|---|---|
| Ancien moteur QRD | Extension numérique historique propre au type, souvent dans la série .0xx. |
| FastReport / FRX | Modèles distingués dans la plage documentée .501 à .998. |
Exemples documentés
| Type | QRD | FastReport |
|---|---|---|
| Vente directe — Ticket / Note A4 | .088 |
.588 |
| Vente directe — Réservation A4 | .086 |
.586 |
Autres extensions historiques citées
.011: étiquette de pesage / produit frais ;.071: journal des tickets DataCollect ;.087: étiquette de tare ;.089: talon de ticket ;.032: courriers clients ;.042: courriers fournisseurs ;.037: remises en banque clients ;.047: remises en banque fournisseurs.
5. Principaux types d’états
Le menu exact évolue selon la version et les modules. Les familles usuelles comprennent :
| Famille | Exemples | Sources typiques |
|---|---|---|
| Produits | Listes, fiches, étiquettes, inventaires, stocks, tarifs. | ARTICLE, grilles annexes, magasins, ARTICLE_ETIQUETTE. |
| Clients | Listes, courriers, étiquettes, relevés, relances. | CLIENT, financier client, échéances, règlements. |
| Fournisseurs | Listes, courriers, relevés et remises en banque. | FOURNISSEUR, financier fournisseur. |
| Documents de vente | Devis, commandes, BL, factures, avoirs. | DEV_*, BCV_*, BLV_*, FAV_*. |
| Documents d’achat | Commandes, réceptions, factures et retours fournisseurs. | BCA_*, BRA_*, FAA_*. |
| Vente directe | Facturette, note A4, réservation, étiquettes, talons, chèques cadeaux. | Tickets, tables temporaires, préférences de centre et dossier. |
| Analyses | Historiques achats, ventes, entrées/sorties, statistiques générales. | Requêtes préparées et tables temporaires de calcul. |
| Ticket Z | Statistique de caisse, TVA, règlements, tranches horaires. | Tables temporaires Z_* et variables de présélection. |
| État libre | Édition personnalisée non rattachée à un menu métier standard. | Tables et requêtes autorisées dans ce contexte. |
6. Méthode de personnalisation recommandée
- Identifiez l’écran exact depuis lequel le document sera imprimé.
- Notez le type d’état et son extension.
- Lancez une impression standard avec des données réelles.
- Ouvrez le générateur sur le même type.
- Dupliquez le modèle standard fonctionnel.
- Donnez un nom clair, par exemple
FAV_CLIENT_LOGO_2026. - Enregistrez une copie externe avant modification.
- Modifiez d’abord un seul élément.
- Testez l’aperçu et l’impression.
- Contrôlez les données, les pages et les totaux.
- Ajoutez les autres adaptations progressivement.
- Affectez le modèle dans les préférences ou la fenêtre d’impression.
- Archivez la version déployée et sa documentation.
7. Structure d’un état FastReport
Pages
Un modèle peut contenir plusieurs pages : document principal, conditions générales, duplicata, annexe ou page technique.
Bandes usuelles
| Bande | Fonction |
|---|---|
| ReportTitle | Imprimée une fois au début de l’état. |
| PageHeader | Répétée en tête de page. |
| GroupHeader | Ouvre un groupe défini par une expression ou un champ. |
| MasterData / DetailData | Répète les objets pour chaque ligne du dataset. |
| GroupFooter | Imprime les sous-totaux et la fermeture d’un groupe. |
| ReportSummary | Imprime les totaux généraux à la fin. |
| PageFooter | Répété en pied de page. |
| Child | Complète une autre bande et facilite certaines hauteurs variables. |
Objets
- Memo ou texte ;
- champ de données ;
- image ou logo ;
- code-barres ou QR code ;
- ligne, rectangle et forme ;
- RichText / RTF ;
- tableau, sous-rapport ou graphique selon la version ;
- variables, expressions et fonctions.
Propriétés importantes
- DataSet : source de la bande ou du champ ;
- DataField : colonne utilisée ;
- Visible : affichage conditionnel ;
- PrintIfEmpty : impression lorsque la source est vide ;
- CanGrow : augmentation automatique de la hauteur ;
- CanShrink : réduction lorsque le contenu est court ;
- StretchMode : comportement avec les lignes multi-lignes ;
- KeepTogether : limitation des coupures ;
- StartNewPage : saut à chaque groupe ;
- RepeatHeaders : répétition des entêtes.
PrintIfEmpty=False pour les états FastReport.
Contrôlez cette propriété dans chaque modèle concerné.
8. Tables, datasets et champs
Un état n’accède pas automatiquement à toute la base. KWISATZ met à disposition les tables ou datasets adaptés au type d’impression sélectionné.
Référentiels usuels
| Table ou famille | Contenu |
|---|---|
DOSSIER |
Coordonnées, société, paramètres et informations du dossier. |
ARTICLE |
Référence, libellés, tarifs, TVA, familles, fournisseurs et paramètres produit. |
CLIENT |
Identité, adresses, coordonnées, tarifs et données client. |
FOURNISSEUR |
Identité, coordonnées, comptes et informations fournisseur. |
| Grilles annexes | Rayons, familles, lignes, marques, catégories et magasins. |
Documents commerciaux
| Type | Entête | Détail |
|---|---|---|
| Devis vente | DEV_ENTETE | DEV_DETAIL |
| Commande vente | BCV_ENTETE | BCV_DETAIL |
| Livraison vente | BLV_ENTETE | BLV_DETAIL |
| Facture vente | FAV_ENTETE | FAV_DETAIL |
| Commande achat | BCA_ENTETE | BCA_DETAIL |
| Réception achat | BRA_ENTETE | BRA_DETAIL |
| Facture achat | FAA_ENTETE | FAA_DETAIL |
Vente directe
TICKET_ENTETE: informations générales du ticket ;TICKET_VENTE: lignes d’articles ;TICKET_REGLEMENT: moyens de paiement ;TICKET_ENTETE_TMP,TICKET_VENTE_TMP,TICKET_REGLEMENT_TMP: ticket en cours pour certaines impressions A4 ;ARTICLE_ETIQUETTE: file et données d’étiquetage ;- tables temporaires statistiques ou fiscales, souvent préfixées
Z_.
Ajouter un champ
Dans FastReport, les nouveaux champs exposés par KWISATZ apparaissent généralement dans le dictionnaire du dataset. Dans les anciens modèles QRD :
- Ouvrez État > Ensemble de données.
- Sélectionnez la table.
- Cliquez sur Champs.
- Cliquez sur Ajouter.
- Sélectionnez les nouveaux champs.
9. Lier plusieurs tables
Pour enrichir un état, il faut souvent joindre le dataset principal à une table complémentaire.
Exemples de liaisons
ARTICLE.CODE_RAYONvers la table des rayons ;ARTICLE.CODE_FAMILLEvers la table des familles ;FAV_ENTETE.CODE_CLIENTversCLIENT.CODE;FAV_DETAIL.REFERENCEversARTICLE.CODE;- liaisons de documents par tables de liens, lorsque disponibles ;
- mouvements financiers vers leur document d’origine.
Choix de méthode
| Méthode | Usage |
|---|---|
| Dataset déjà fourni | Solution la plus sûre ; utilisez les champs préparés par KWISATZ. |
| Relation maître/détail | Document avec une entête et plusieurs lignes. |
| Lookup | Recherche d’un libellé dans une petite table de référence. |
| Requête SQL paramétrée | Jointure, agrégation ou sélection non fournie par le dataset standard. |
| Script | Présentation conditionnelle ; à éviter pour remplacer une vraie jointure volumineuse. |
10. Variables et paramètres
KWISATZ transmet au modèle des variables issues de la fenêtre de présélection, du document courant, du dossier et de l’environnement. La liste dépend du type d’état.
Catégories usuelles
| Catégorie | Exemples |
|---|---|
| Période | Date de début, date de fin, périodes comparatives. |
| Sélection magasin | Type de sélection, code magasin choisi. |
| Filtres métier | Client, fournisseur, produit, rayon, famille, vendeur, caisse ou centre. |
| Document courant | Numéro, type, date, client ou fournisseur. |
| Dossier | Nom de société, adresse, SIRET et informations visibles dans DOSSIER. |
| Système FastReport | Numéro de page, total de pages, date et heure d’impression. |
| Variables calculées | Totaux, compteurs, texte conditionnel ou paramètres créés dans le modèle. |
Exemple d’expression
[FAV_ENTETE."NUMERO"]
[CLIENT."NOM"]
[Page]
[TotalPages]
Variables de présélection
Les noms exacts sont visibles dans le dictionnaire ou dans le modèle standard. Des états récents exposent par exemple des informations relatives à la source de données, aux livraisons, au magasin sélectionné ou au type de période.
11. Requêtes SQL
Une requête personnalisée permet d’ajouter des jointures, regroupements, filtres ou calculs. Elle doit rester une requête de lecture et respecter les paramètres transmis par KWISATZ.
Structure recommandée
Cet exemple est volontairement générique. Les noms de paramètres et de champs doivent être repris dans le modèle standard et le dictionnaire réel.
Requête paramétrée
- utilisez les dates et sélections reçues de KWISATZ ;
- typez correctement les paramètres texte, entier, date ou booléen ;
- filtrez le magasin, le centre ou la caisse lorsque l’état le demande ;
- limitez le volume pendant la mise au point ;
- triez explicitement avec
ORDER BY; - ajoutez les champs utilisés par les groupes et totaux ;
- contrôlez le nombre de lignes obtenu.
Onglet Résultats
Après l’exécution d’un état, l’onglet Résultats de la fenêtre d’édition affiche :
- la requête SQL finale envoyée au générateur ;
- le nombre de lignes renvoyé ;
- le temps d’exécution.
Une barre de progression apparaît pendant la requête. Le bouton Annuler ou la touche Échap permettent d’interrompre le traitement.
UPDATE, DELETE,
INSERT, ALTER ou une procédure modifiant
les données dans un modèle d’impression.
Performance
- évitez les sous-requêtes exécutées ligne par ligne ;
- filtrez le plus tôt possible ;
- utilisez les index existants ;
- évitez les conversions sur les champs filtrés ;
- n’utilisez pas
SELECT *sur de grosses tables ; - testez avec les volumes réels ;
- comparez le temps dans l’onglet Résultats.
12. Totaux, arrondis et regroupements
Utiliser les montants stockés
Pour une facture ou un ticket, utilisez en priorité les champs de total calculés et stockés par KWISATZ.
Risque d’un recalcul SQL
SUM(Quantité × Prix × (1 − Remise / 100))
Cette formule peut conserver plus de décimales que le document. KWISATZ arrondit les lignes selon les règles du dossier, puis totalise les montants arrondis. Une requête qui agrège les valeurs brutes peut donc différer de quelques centimes.
Sommes FastReport
Vérifiez le périmètre d’une somme :
- dataset utilisé ;
- bande de données concernée ;
- réinitialisation à chaque groupe ;
- lignes masquées incluses ou non ;
- sous-total déjà calculé ajouté une deuxième fois ;
- retours et lignes négatives ;
- duplication provoquée par une jointure un-à-plusieurs.
Groupes
Une requête avec GROUP BY et un groupe FastReport
ne répondent pas au même besoin. Le premier réduit les lignes ;
le second organise leur impression.
13. Expressions, scripts et événements
FastReport permet de piloter la présentation avec des expressions
et des événements, notamment OnBeforePrint.
Cas d’usage
- masquer une ligne selon un type de ticket ;
- afficher une mention uniquement pour un client ou une TVA ;
- changer la police d’une ligne d’annulation ;
- imprimer une page de CGV sous condition ;
- calculer un texte ou une date ;
- répéter ou supprimer une entête ;
- adapter l’affichage à un champ vide.
Exemple conceptuel
procedure DetailOnBeforePrint(Sender: TfrxComponent);
begin
Detail.Visible := <condition métier>;
end;
Utilisez le nom réel de la bande et une condition fondée sur les champs disponibles dans le modèle.
Bonnes pratiques
- nommer les objets de façon explicite ;
- commenter les scripts importants ;
- éviter les calculs métier complexes dans le script ;
- ne pas modifier les données ;
- tester les valeurs nulles et les divisions par zéro ;
- tester les documents de plusieurs pages ;
- documenter toute variable créée.
14. Mise en page, images et texte variable
Texte multi-lignes
Pour un libellé étendu, une adresse ou une observation :
- activez le retour automatique à la ligne ;
- activez l’augmentation automatique de hauteur ;
- placez le champ dans une bande pouvant s’étirer ;
- vérifiez les objets placés en dessous ;
- testez les champs vides et très longs.
Images et logos
- privilégiez une image locale stable ou intégrée au modèle ;
- respectez les proportions ;
- testez l’impression noir et blanc ;
- évitez les images très lourdes ;
- contrôlez l’envoi par email et l’export PDF.
Codes-barres
- choisissez la symbologie adaptée ;
- conservez une zone blanche autour du code ;
- testez avec le lecteur réel ;
- ne réduisez pas excessivement la hauteur ;
- contrôlez le texte lisible sous le code.
Conditions générales
Pour ajouter une page de CGV :
- dupliquez le modèle ;
- ajoutez une page finale ;
- insérez le texte ou un objet RTF ;
- gérez la visibilité selon le type de document ;
- testez recto/verso et PDF ;
- contrôlez que la page ne s’imprime pas en double.
15. Prévisualisation, impression et exports
Prévisualisation
La fenêtre FastReport permet la navigation, le zoom, l’impression, l’export et l’envoi par email selon le contexte. KWISATZ mémorise la taille de cette fenêtre dans les versions récentes.
Exports
- PDF ;
- Excel ;
- HTML ;
- texte ou CSV selon le filtre disponible ;
- formats graphiques ou autres filtres installés.
L’export PDF peut produire un PDF autonome de type PDF/A dans les versions documentées. Dans :
Outils > Préférences > Divers > Autres, les zones récentes permettent de définir :
- Générateur FRX — Export PDF — Chemin par défaut ;
- Générateur FRX — Export PDF — Afficher dialogue.
Fichiers temporaires
Les sous-dossiers FR_TMP et QR_TMP
du dossier de travail sont destinés aux fichiers générés pendant les exports.
Excel
Pour un export exploitable :
- alignez les colonnes sur une grille régulière ;
- évitez les objets superposés ;
- limitez les cellules fusionnées ;
- utilisez une bande de titre pour les informations uniques ;
- placez les données répétées dans la bande de détail ;
- testez les champs longs, notamment email et adresse.
L’envoi depuis la prévisualisation FastReport utilise la fenêtre générique d’email de KWISATZ dans les versions récentes. Contrôlez le destinataire, l’objet, le PDF joint et les images.
16. Gérer les modèles personnalisés
Nommage conseillé
TYPE_CLIENT_OBJET_VERSION
FAV_DUPONT_LOGO_RIB_V3
Z_CAISSE_MAGASINS_2026
ETQ_PRODUIT_RAYON_50X30
Informations à documenter
- nom et extension du fichier ;
- type d’état KWISATZ ;
- modèle standard d’origine ;
- date et auteur de la modification ;
- tables et requêtes ajoutées ;
- variables utilisées ;
- scripts et conditions ;
- imprimante, format et marges ;
- préférences ou centres qui utilisent le modèle ;
- jeu de recette et totaux attendus.
Avant une mise à jour KWISATZ
- Recensez les modèles personnalisés.
- Copiez-les hors du dossier de production.
- Conservez une capture ou un PDF de référence.
- Effectuez la mise à jour.
- Comparez les modèles standards livrés.
- Testez les modèles clients sur une copie de données.
- Réintégrez les nouvelles tables ou variables nécessaires.
- Validez les totaux avant remise en service.
17. Migrer un modèle QRD vers FastReport
Une conversion automatique ou manuelle ne garantit pas un rendu identique. Les deux moteurs ne calculent pas toujours les hauteurs, marges, bandes, colonnes et zones imprimables de la même manière.
Procédure sûre
- Conservez le modèle QRD d’origine.
- Imprimez et exportez un document de référence.
- Créez un modèle FastReport natif du même type.
- Reproduisez les données et la mise en page progressivement.
- Testez d’abord sans logo, code-barres ni script.
- Ajoutez ensuite les objets complexes.
- Comparez les dimensions et totaux page par page.
- Testez sur l’imprimante réelle.
Cas des étiquettes
Les étiquettes sont particulièrement sensibles :
- marge non imprimable du pilote ;
- hauteur de bande ;
- espacement entre colonnes ;
- nombre d’étiquettes par page ;
- décalage progressif ;
- texte du code-barres ;
- format papier réellement déclaré dans Windows.
18. États fiscaux, comptables et contractuels
Une modification graphique peut avoir un impact métier :
- suppression d’un taux de TVA ;
- total calculé deux fois ;
- remise ou acompte absent ;
- RIB incorrect ;
- mentions légales manquantes ;
- CGV non applicables au document ;
- Ticket Z incomplet ;
- différence entre document et comptabilité.
Contrôles obligatoires
- total HT ;
- TVA par taux ;
- total TTC ;
- acomptes et règlements ;
- reste à payer ;
- quantités et unités ;
- numéro, date et identité du document ;
- mentions fiscales ou commerciales requises.
19. Recette d’un modèle
- Un document d’une seule ligne.
- Un document de plusieurs pages.
- Une ligne avec libellé très long.
- Une adresse complète et une adresse vide.
- Plusieurs taux de TVA.
- Une remise de ligne et une remise globale.
- Un acompte et plusieurs règlements.
- Une ligne négative ou un avoir.
- Un client particulier et un professionnel.
- Un document transformé depuis une commande ou un BL.
- Une impression directe.
- Une impression vers une autre imprimante.
- Un export PDF.
- Un export Excel.
- Un envoi par email.
- Une période sans donnée.
- Une période volumineuse.
- Une comparaison avec le modèle standard.
20. Diagnostic rapide
Le modèle n’apparaît pas dans la liste
Message « ensemble de données non présent »
Message « un champ de données n’a pas de source »
Un nouveau champ n’est pas visible
L’état est vide alors que des données existent
L’état est très lent
La requête semble bloquée
Le total est doublé
Le total diffère de quelques centimes
Une bande Résumé n’apparaît pas
Une page blanche s’imprime
Le libellé long est tronqué
Le modèle est réduit ou déformé à l’écran
Les étiquettes se décalent progressivement
La dernière valeur RTF se répète
L’export PDF ne demande plus de chemin
Le fichier exporté est introuvable
L’export Excel contient des cellules fusionnées inutilisables
L’email contient un PDF mais les images du corps manquent
Un ancien état QRD ne trouve plus ses tables
Le modèle fonctionne en aperçu mais pas sur l’imprimante
Le modèle ne fonctionne plus après mise à jour
21. Actions à éviter
- modifier l’unique modèle standard actif ;
- changer une extension pour convertir un type d’état ;
- utiliser une requête d’écriture dans un rapport ;
- recalculer les totaux fiscaux sans reproduire les arrondis ;
- supprimer une bande ou une page sans contrôler ses scripts ;
- copier des variables entre types sans vérifier leur présence ;
- déployer sans test multi-pages et multi-TVA ;
- modifier un modèle de production sans sauvegarde ;
- laisser un modèle de Ticket Z non comparé au standard ;
- considérer une conversion QRD comme fidèle sans test imprimante ;
- tester une requête volumineuse sans filtre ;
- utiliser le générateur pour corriger directement les données.
22. Liste de contrôle
- Le type d’état et l’extension sont corrects.
- Le modèle standard d’origine est conservé.
- Une copie externe du modèle existe.
- Les datasets et champs sont disponibles.
- Les variables sont présentes et correctement typées.
- Les requêtes sont en lecture seule.
- Les filtres magasin, caisse et période sont appliqués.
- Le nombre de lignes renvoyé est cohérent.
- Les totaux utilisent les valeurs KWISATZ appropriées.
- Les scripts gèrent les champs vides et divisions par zéro.
- Les documents multi-pages sont testés.
- Le PDF et l’Excel sont testés.
- L’impression réelle est contrôlée.
- Les mentions légales sont présentes.
- Le modèle est nommé, versionné et documenté.
- Les préférences utilisant ce modèle sont recensées.
23. Évolutions KWISATZ documentées
| Période | Évolution |
|---|---|
| 2016–2017 | Développement et intégration de FastReport, puis mise en place du double générateur. |
| Mars 2017 | Les modèles FRX sont distingués par des extensions numériques de .501 à .998. |
| 2018 | Ajout de types FastReport pour les documents A4 de vente directe et harmonisation des impressions. |
| Mars 2019 | Harmonisation des exports FastReport et QRReport, création de FR_TMP et QR_TMP, PDF autonome. |
| Juin 2019 | Ajout de la barre de progression SQL et de l’onglet Résultats avec requête finale, nombre de lignes et durée. |
| Mars 2020 | Les nouveaux champs sont visibles directement dans les modèles FastReport ; les anciens QRD nécessitent encore l’ajout manuel des champs. |
| Mai 2020 | Accès FastReport commun aux Pack caisse (fonctions avancées) et Pack caisse (fonctions avancées), amélioration de la prévisualisation et de l’envoi par email. |
| Février 2025 | Ajout du chemin PDF par défaut et de l’option d’affichage du dialogue d’export FRX. |
| Octobre 2024 et après | Ajout de nouveaux types et extensions, notamment réservation A4 et journaux techniques. |
24. Sources documentaires
- MENUS_KWISATZ — Outils, Générateur d’états et fenêtres d’impression.
- MENUS_KWISATZ — analyses, historiques, statistiques, produits, clients et documents.
- Suivi de développement KWISATZ — double générateur, extensions FRX et nouveaux types d’états.
- Suivi de développement KWISATZ — requêtes SQL, onglet Résultats, exports et prévisualisation.
- Suivi de développement KWISATZ — champs FastReport, compatibilité QRD et propriétés d’impression.
- Base support téléphonique — modèles personnalisés, datasets, requêtes, arrondis, migrations et dépannage.