Aller au contenu principal
Version: Prochaine version

Relations, formules et cumuls

Jusqu'ici, vos objets vivaient chacun de leur côté. C'est en les reliant entre eux, puis en faisant calculer la plateforme à votre place, que votre application prend toute sa valeur. Cette page couvre quatre types de champs qui travaillent ensemble :

Type de champÀ quoi il sertExemple
Relation vers un objetLier une fiche à une autreUne facture → son client
Champ calculé (formule)Calculer, ou choisir, à partir des champs de la fiche et des fiches liéesMontant = {quantite} * {prix_unitaire}
Cumul d'objets liésAgréger les fiches liées (somme, moyenne…)Total du devis = somme de ses lignes
Pré-remplissage automatiqueRecopier une valeur depuis la fiche liéeLe taux de TVA recopié depuis le client

Tous se créent au même endroit : dans le Studio, onglet Objets, ouvrez votre objet puis son onglet Champs, et cliquez sur + Ajouter un champ.

Studio, détail d'un objet, onglet Champs

Relier deux objets : le champ « Relation vers un objet »

Une relation crée un lien d'une fiche vers une fiche d'un autre objet. Exemple classique : chaque Facture est rattachée à un Client.

Créer la relation

  1. Ouvrir l'objet Facture dans le Studio (onglet Objets), puis son onglet Champs.
  2. Cliquer sur + Ajouter un champ.
  3. Saisir le Libellé (par exemple « Client »), le Code se remplit tout seul.
  4. Dans Type, choisir Relation vers un objet.
  5. Dans Objet cible, choisir l'objet à relier (ici Client).
  6. Cliquer sur Ajouter le champ.

Dans le formulaire de saisie d'une facture, ce champ devient un champ de recherche : tapez quelques lettres, choisissez la fiche dans la liste. L'option — Aucun — retire le lien. Si aucune fiche ne correspond à ce que vous avez tapé, une ligne Créer « … » vous propose de créer la fiche liée à la volée, sans quitter votre saisie.

Quel texte s'affiche pour la fiche liée ?

Chaque objet a un champ clé (libellé) : c'est le premier champ de type texte que vous avez ajouté à l'objet (par exemple « Nom » pour un client). C'est cette valeur qui représente la fiche partout : dans les listes, dans les champs relation, dans les documents. Ce champ est protégé : il n'est pas supprimable.

Cas particulier : les lignes d'un document (sous-objets)

Pour des « lignes » qui n'existent que sous une fiche parente, les lignes d'un devis, les jours d'un compte rendu, créez un sous-objet plutôt qu'un objet ordinaire :

  1. Dans l'onglet Objets, cliquer sur Nouvel objet.
  2. Renseigner le nom (par exemple « Ligne de devis »).
  3. Dans Sous-objet de (optionnel), choisir l'objet parent (par exple Devis).
  4. Cliquer sur Créer l'objet.

Comme l'indique la modale : un sous-objet est masqué du menu et édité en ligne sous chaque enregistrement parent (ex. lignes sous un devis) ; la relation vers le parent est créée automatiquement. Vous n'avez donc pas de champ relation à créer vous-même dans ce cas. Voir aussi Créer un objet.

N'afficher les lignes que dans certains cas

Un sous-objet peut n'apparaître que sous condition, par exemple des lignes de matières dangereuses affichées seulement si la case « Transport de matière dangereuse » est cochée. Il faut pour cela le placer dans la grille de l'objet : un sous-objet non placé s'affiche systématiquement en bas de la fiche. La marche à suivre est dans Conditions d'affichage.

Calculer une valeur : le champ « Champ calculé (formule) »

Un champ formule affiche un résultat calculé à partir des autres champs de la fiche, et des fiches qui lui sont liées. Il n'est jamais saisi à la main.

Créer une formule

  1. Dans l'onglet Champs de l'objet, cliquer sur + Ajouter un champ.
  2. Choisir le Type : Champ calculé (formule).
  3. Écrire l'expression dans le champ Formule. Tapez { pour insérer un champ : la liste s'ouvre, fiches liées comprises. Le résultat s'affiche en direct, calculé sur une vraie fiche.
  4. Choisir le Type du résultat (nombre, texte, oui/non, date), puis cliquer sur Ajouter le champ.

Exemple, sur une ligne de devis avec les champs « Quantité » (quantite) et « Prix unitaire » (prix_unitaire) :

{quantite} * {prix_unitaire}

Une formule sait aussi décider et aller chercher une valeur sur une fiche liée :

SI({statut} == "livree" ; "Terminé" ; "En cours")
SI({client.categorie} == "pro" ; {total} * 0.9 ; {total})

Ce qu'on peut écrire

  • Référence à un champ : {prix_unitaire} ; à un champ d'une fiche liée : {client.ville} (un seul saut).
  • Nombres et textes, opérateurs + - * / %, parenthèses, comparaisons == != < <= > >=.
  • SI(condition ; alors ; sinon), ET, OU, NON, et une vingtaine de fonctions (arrondi, texte, dates).

La liste complète des fonctions, les règles de comparaison et un tableau de formules types sont sur la page dédiée : Écrire une formule.

Bon à savoir

  • Le résultat est calculé au moment de la lecture de la fiche : il est toujours à jour, sans rien enregistrer.
  • Un champ vide vaut 0 dans un calcul ; une division par zéro donne un résultat vide, jamais une erreur.
  • Un champ formule n'est ni saisissable, ni triable, ni filtrable : c'est un affichage, pas une donnée saisie.
  • Le Type du résultat décide de l'affichage : une formule qui renvoie un libellé doit être déclarée en Texte.
  • Un champ utilisé dans une formule est protégé : le Studio refuse sa suppression avec le message « Champ utilisé dans une formule, non supprimable ».
Champs chiffrés

Une formule ne peut pas référencer un champ marqué Sensible / PII (chiffré au repos) : le résultat du calcul, lui, ne serait pas chiffré et exposerait la valeur. Le Studio refuse l'enregistrement d'une telle formule.

Format d'affichage

Pour un champ formule numérique, le sélecteur Format d'affichage propose Standard, Montant (€), Pourcentage ou Barre de progression (0–100). Un montant s'affichera par exemple « 17 976,00 € ».

Agréger les fiches liées : le champ « Cumul d'objets liés »

Le cumul (ou rollup) regarde toutes les fiches liées à la fiche courante et en tire un chiffre : le total des lignes d'un devis, le nombre de commandes d'un client, la date de la dernière activité…

Prérequis : il faut d'abord qu'une relation pointe vers votre objet. Pour un total de devis, l'objet Ligne de devis doit avoir un champ relation vers Devis (créé automatiquement si c'est un sous-objet). Sans cela, le Studio vous préviendra : « Aucun objet ne pointe vers … par une relation. Crée d'abord un champ relation sur l'objet enfant. »

Créer un cumul

Exemple : le champ « Total HT » d'un Devis, somme du champ « Montant » de ses lignes.

  1. Ouvrir l'objet Devis, onglet Champs, puis + Ajouter un champ.
  2. Libellé : « Total HT ». Type : Cumul d'objets liés.
  3. Dans Objets liés à cumuler, choisir la relation qui pointe ici (par exemple « Ligne de devis · Devis »).
  4. Dans Opération, choisir l'agrégation :
OpérationRésultat
SommeAdditionne le champ choisi sur toutes les fiches liées
NombreCompte les fiches liées (aucun champ à choisir)
MoyenneMoyenne du champ choisi
MinimumLa plus petite valeur
MaximumLa plus grande valeur
  1. Dans Champ à cumuler, choisir le champ des fiches liées à agréger (ici « Montant »), sauf pour Nombre, qui s'en passe.
  2. Cliquer sur Ajouter le champ.

Désormais, chaque devis affiche son total, recalculé à chaque lecture. Ajoutez une ligne, le total suit.

Formule + cumul = devis complet

Les deux se combinent naturellement : sur la Ligne de devis, un champ formule {quantite} * {prix_unitaire} calcule le montant de la ligne ; sur le Devis, un cumul Somme de ce montant donne le total. Avec 3 lignes à 120,00 €, 250,00 € et 80,00 €, le devis affiche 450,00 €.

  • Comme la formule, le cumul est en lecture seule, ni triable ni filtrable.
  • Un champ chiffré ne peut pas être cumulé.
  • La relation utilisée par un cumul est protégée : « Relation utilisée par un cumul, non supprimable ».

Recopier une valeur : le pré-remplissage automatique

Le pré-remplissage recopie une valeur depuis la fiche liée vers la fiche en cours. Exemple : sur un Devis, recopier le champ « Commercial » du Client choisi.

Contrairement aux autres, ce réglage se fait sur un champ existant :

  1. Créer d'abord un champ ordinaire sur l'objet (par exemple « Commercial », de type Texte court), du même type que le champ à recopier.
  2. Dans l'onglet Champs, cliquer sur l'icône crayon (Modifier le champ) de ce champ.
  3. Dans la section Pré-remplissage automatique :
    • D'après la relation : choisir le champ relation de l'objet qui sert de source (par exemple « Client »), l'option — Aucun (saisie manuelle) — désactive le pré-remplissage ;
    • Recopier le champ : choisir le champ de la fiche liée à recopier (seuls les champs du même type sont proposés) ;
    • cocher ou non Verrouiller (lecture seule, toujours synchronisé).
  4. Cliquer sur Enregistrer.

Deux comportements, selon la case Verrouiller :

ModeComportement
Verrouillé (case cochée)Le champ est rempli automatiquement et non modifiable : il reste toujours synchronisé avec la fiche liée.
Modifiable (case décochée)Le champ est pré-rempli au choix de la fiche liée, mais vous pouvez ensuite corriger la valeur au cas par cas.
Quand utiliser quoi ?

Un pré-remplissage copie une valeur unitaire depuis la fiche liée (verrouillé = miroir, modifiable = simple suggestion). Un cumul agrège plusieurs fiches liées en un chiffre. Une formule calcule à partir des champs de la fiche elle-même. Les champs calculés (formule, cumul) ne peuvent pas être pré-remplis, ils se calculent déjà tout seuls.

En résumé

Je veux…Type de champRéglages clés
Rattacher une facture à son clientRelation vers un objetObjet cible
Des lignes sous un devisSous-objetSous-objet de (optionnel) à la création de l'objet
Montant = quantité × prixChamp calculé (formule)Formule : {quantite} * {prix_unitaire}
Un libellé selon l'état de la ficheChamp calculé (formule)SI({statut} == "livree" ; "Terminé" ; "En cours"), résultat en Texte
Total du devis = somme des lignesCumul d'objets liésObjets liés à cumuler, Opération, Champ à cumuler
Recopier le commercial du clientPré-remplissage automatiqueD'après la relation, Recopier le champ, Verrouiller

Pour aller plus loin : Écrire une formule · Types de champs · Créer un objet · Mise en page et vues · Automatisations · Documents PDF