Créer un rapport
Objectif
Transformer un modèle conçu en un rapport que les utilisateurs peuvent exécuter : imprimé pour un enregistrement (« imprimer cette facture ») ou pour toute une liste, depuis la barre de commandes, dans l’application qu’ils ont déjà ouverte.
De quoi se compose un rapport
Deux moitiés, qui se rejoignent par un nom.
- Le modèle — la page : ses bandes, ses tableaux, son logo, son filigrane. Conçu dans le concepteur graphique et exporté en JSON, que vous collez ici.
- Les jeux de données — les lignes qui le remplissent. Chacun nomme une requête enregistrée ou porte sa propre requête, sous un nom auquel le modèle fait référence.
Un rapport ne porte aucune donnée propre. Tout ce qu’il imprime est une requête, exécutée quand quelqu’un appuie sur Imprimer, avec ses autorisations. Deux personnes qui impriment le même rapport voient chacune les enregistrements qu’elles ont le droit de voir — un rapport est une mise en page de vos données, jamais un moyen de contourner qui peut les lire.
Prérequis
- Vous êtes connecté en tant que créateur, avec une solution et un environnement sélectionnés.
- Les requêtes enregistrées qu’utilisera votre rapport existent déjà (ou vous écrirez la requête directement).
- Vous disposez d’un modèle exporté depuis le concepteur.
Étapes
- Ouvrez votre solution et choisissez Rapports.
- Sélectionnez Nouveau et donnez-lui un nom d’affichage — le nom logique se remplit tout seul.
- Renseignez les jeux de données. Pour chacun :
- Nom — la façon dont le modèle appelle ces lignes. Le répéteur du modèle le nomme : les deux doivent donc correspondre exactement.
- Requête enregistrée — la question qui le remplit, choisie parmi les requêtes enregistrées de l’environnement plutôt que saisie. Chaque option indique quelle table lit la requête, car un nom d’affichage permet rarement d’en distinguer deux. Écrivez d’abord la question — voir Enregistrer une requête.
- Champ d’enregistrement — facultatif ; voir plus bas.
- Collez le JSON du modèle.
- Sélectionnez Enregistrer. La plateforme vérifie que le rapport est bien formé, que chaque requête est valide, et que chacune s’exécuterait réellement ici — chaque champ, jointure et mesure par rapport aux tables réelles de cet environnement. Un champ mal orthographié est refusé maintenant, plutôt que découvert par la personne qui appuie sur Imprimer.
Le premier jeu de données est le jeu principal. Sa table est ce sur quoi porte le rapport : elle détermine quels enregistrements et quelles listes proposent le rapport dans leur barre de commandes, et c’est à lui qu’est transmis le filtre en cours d’une liste.
Imprimer un enregistrement
Renseignez le champ d’enregistrement d’un jeu de données et le rapport peut être imprimé pour un seul enregistrement.
- Sur le jeu de données principal, c’est généralement
id— « cette facture ». - Sur un jeu de données enfant, c’est la recherche qui renvoie au parent —
par_invoiceidsur les lignes, si bien qu’imprimer la facture 42 imprime les lignes de la facture 42 et aucune autre. - Laissez-le vide et le jeu de données ne dépend pas de l’enregistrement depuis lequel vous avez imprimé. C’est ainsi qu’un rapport peut imprimer une seule facture à côté d’un tableau des taux de change du mois.
En exécuter un
On accède à un rapport délibérément — rien ne place un bouton sur une table simplement parce qu’un rapport la nomme. Trois accès possibles :
- Depuis la navigation de l’application, si un créateur y a placé le rapport. Il s’ouvre sur toute la table.
- Depuis une commande qu’un créateur a dessinée sur un formulaire ou une vue, avec Exécuter un rapport comme comportement. Utilisée sur un enregistrement ouvert, elle imprime cet enregistrement ; utilisée sur une liste, elle porte sur toute la table. Voir Faire faire quelque chose à un bouton.
- Depuis un widget de tableau de bord qui le nomme.
Dans tous les cas, le rapport s’ouvre dans son propre écran, avec la navigation de l’application toujours à côté et son adresse dans la barre d’adresse — un rapport que vous consultez peut donc être actualisé, ajouté aux favoris ou envoyé à un collègue. Un rapport ouvert par une commande porte un bouton ← au début de la barre d’outils de la visionneuse, qui ramène à l’écran sur lequel le bouton a été utilisé.
La recherche et le filtre d’une liste ne le suivent pas. Un rapport est désigné par son propre nom, et un filtre n’est pas quelque chose qu’une adresse peut transporter ; pour produire un rapport sur un ensemble d’enregistrements plus restreint, donnez le filtre au rapport.
Lire un rapport à l’écran
La visionneuse s’ouvre sur une page à la fois, avec un zoom qui fait tenir une page entière, et Imprimer à la fin. Quatre commandes changent ce que vous regardez :
- Pages — Une page avec un pagineur (la façon de lire un rapport) ou Toutes les pages, en défilement (la façon de le vérifier avant de l’imprimer). En mode Toutes les pages, le pagineur disparaît, car il serait une seconde réponse à la question de savoir où vous êtes.
- Zoom — Ajuster à la page, Ajuster à la largeur ou Taille réelle. Ajuster veut dire ajuster, dans les deux sens : une page plus étroite que votre fenêtre est agrandie pour la remplir, car c’est ce que promet le nom de la commande. Taille réelle est la réponse quand vous voulez du 1:1.
- Plein écran — remplit la fenêtre avec le rapport. Échap permet d’en sortir. Le rapport reste dans l’application : les messages et le reste du produit fonctionnent toujours pendant qu’il est ouvert.
- Imprimer.
L’impression produit toutes les pages en taille réelle — pas celle qui est à l’écran, pas au zoom auquel vous lisiez — et aucun des boutons propres à la visionneuse. Le papier est celui pour lequel le rapport a été conçu — un rapport A4 s’imprime sur du A4, bord à bord, sans en-tête, pied de page, URL ni numéro de page du navigateur dans la marge, car la feuille n’a pas de marge où les imprimer.
Si vous avez activé les en-têtes et pieds de page dans la boîte de dialogue d’impression de votre navigateur, vous les obtiendrez quand même — ce réglage vous appartient, et la plateforme ne le remplace pas. Désactivez « En-têtes et pieds de page » à cet endroit.
Un rapport est du texte, pas l’image d’un texte
Vous pouvez sélectionner n’importe quel texte d’un rapport et le copier, et la fonction Rechercher de votre navigateur (Ctrl+F / ⌘F) cherche dans la page affichée. Un lecteur d’écran lit le rapport à voix haute plutôt que d’annoncer une image. Rien de tout cela n’est un réglage : une page de rapport est du texte ordinaire sur la page, ce qui permet aussi aux lignes en persan et en arabe de s’afficher correctement lorsqu’elles contiennent un code produit en caractères latins ou un prix — le navigateur ordonne lui-même le texte mixte.
La recherche porte sur les pages affichées à l’écran. En mode Une page, c’est la page que vous lisez ; passez à Toutes les pages pour chercher dans tout le rapport à la fois.
Dates, nombres et chiffres
Un rapport imprime les dates dans le même calendrier et selon le même format que la grille voisine, et les nombres avec les mêmes chiffres — chiffres persans et dates jalali pour un locataire persan. Vous ne le configurez pas rapport par rapport : cela vient de Paramètres → Calendrier et des paramètres régionaux du locataire, si bien qu’un rapport ne peut pas s’écarter du reste du produit.
Le déplacer entre environnements
Un rapport est un composant de solution, rangé sous la table sur laquelle il porte. Ajoutez-le à votre solution depuis la liste Gérer les composants de cette table, et il s’exporte et s’importe avec tout le reste — y compris son modèle, qui voyage à l’intérieur du rapport plutôt qu’à côté.
Ses requêtes enregistrées voyagent aussi, et sont importées avant lui : un rapport est refusé s’il nomme une requête que l’environnement cible ne possède pas, ce qui est l’échec honnête plutôt qu’un rapport qui s’importe puis n’imprime rien.
Dépannage
- « Le modèle n’est pas un JSON valide. » — le collage est tronqué ou contient un caractère parasite. La zone ne reformate pas ce que vous tapez : ce que vous voyez est ce qui a été envoyé.
- « Un rapport a besoin d’au moins un jeu de données. » — une ligne de jeu de données doit avoir à la fois un nom et une requête enregistrée pour compter ; une ligne à moitié remplie est ignorée.
- « Le jeu de données 'rows' doit nommer exactement l’un de 'savedQuery' ou 'query'. » — vous avez renseigné les deux, ou aucun.
- « …nomme la requête enregistrée 'x', qui n’existe pas dans cet environnement. » — vérifiez l’orthographe, ou ajoutez la requête à la solution pour qu’elle voyage.
- « Champ inconnu … » — la requête nomme un champ qui n’est pas sur sa table. Corrigez la requête, pas le rapport.
- Le rapport s’imprime mais la page est vide. — le répéteur du modèle nomme un jeu de données que le rapport ne définit pas. Les noms doivent correspondre exactement.
- « Le modèle de ce rapport n’a pas pu être mis en page. » — le moteur n’a pas pu en faire des pages. Réexportez-le depuis le concepteur ; un modèle modifié à la main se casse facilement.
- Aucune commande de rapport n’apparaît sur l’enregistrement. — rien n’en génère une. Dessinez un bouton et donnez-lui Exécuter un rapport, ou placez le rapport dans la navigation de l’application.
- Le rapport s’est ouvert mais affiche tous les enregistrements. — il a été exécuté depuis une liste, ou depuis un enregistrement jamais enregistré. Seul un enregistrement ouvert et enregistré restreint un rapport.