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 sert | Exemple |
|---|---|---|
| Relation vers un objet | Lier une fiche à une autre | Une facture → son client |
| Champ calculé (formule) | Calculer, ou choisir, à partir des champs de la fiche et des fiches liées | Montant = {quantite} * {prix_unitaire} |
| Cumul d'objets liés | Agréger les fiches liées (somme, moyenne…) | Total du devis = somme de ses lignes |
| Pré-remplissage automatique | Recopier une valeur depuis la fiche liée | Le 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.

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
- Ouvrir l'objet Facture dans le Studio (onglet Objets), puis son onglet Champs.
- Cliquer sur + Ajouter un champ.
- Saisir le Libellé (par exemple « Client »), le Code se remplit tout seul.
- Dans Type, choisir Relation vers un objet.
- Dans Objet cible, choisir l'objet à relier (ici Client).
- 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.
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 :
- Dans l'onglet Objets, cliquer sur Nouvel objet.
- Renseigner le nom (par exemple « Ligne de devis »).
- Dans Sous-objet de (optionnel), choisir l'objet parent (par exple Devis).
- 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.
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
- Dans l'onglet Champs de l'objet, cliquer sur + Ajouter un champ.
- Choisir le Type : Champ calculé (formule).
- É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. - 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 ».
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.
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.
- Ouvrir l'objet Devis, onglet Champs, puis + Ajouter un champ.
- Libellé : « Total HT ». Type : Cumul d'objets liés.
- Dans Objets liés à cumuler, choisir la relation qui pointe ici (par exemple « Ligne de devis · Devis »).
- Dans Opération, choisir l'agrégation :
| Opération | Résultat |
|---|---|
| Somme | Additionne le champ choisi sur toutes les fiches liées |
| Nombre | Compte les fiches liées (aucun champ à choisir) |
| Moyenne | Moyenne du champ choisi |
| Minimum | La plus petite valeur |
| Maximum | La plus grande valeur |
- Dans Champ à cumuler, choisir le champ des fiches liées à agréger (ici « Montant »), sauf pour Nombre, qui s'en passe.
- Cliquer sur Ajouter le champ.
Désormais, chaque devis affiche son total, recalculé à chaque lecture. Ajoutez une ligne, le total suit.
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 :
- 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.
- Dans l'onglet Champs, cliquer sur l'icône crayon (Modifier le champ) de ce champ.
- 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é).
- Cliquer sur Enregistrer.
Deux comportements, selon la case Verrouiller :
| Mode | Comportement |
|---|---|
| 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. |
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 champ | Réglages clés |
|---|---|---|
| Rattacher une facture à son client | Relation vers un objet | Objet cible |
| Des lignes sous un devis | Sous-objet | Sous-objet de (optionnel) à la création de l'objet |
| Montant = quantité × prix | Champ calculé (formule) | Formule : {quantite} * {prix_unitaire} |
| Un libellé selon l'état de la fiche | Champ calculé (formule) | SI({statut} == "livree" ; "Terminé" ; "En cours"), résultat en Texte |
| Total du devis = somme des lignes | Cumul d'objets liés | Objets liés à cumuler, Opération, Champ à cumuler |
| Recopier le commercial du client | Pré-remplissage automatique | D'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