Variables
Les variables vous permettent de stocker des valeurs intermédiaires pour rendre vos formules plus lisibles et éviter les calculs redondants.
Pourquoi les variables ?
Sans variables, les formules complexes deviennent vite illisibles. Comparez ces deux versions :
❌ Sans variables (difficile à lire)
findObjects(commande, {}).filter(x => x.statut === "validée").map(x => x.total).sum()✓ Avec variables (clair et lisible)
let toutesLesCommandes = findObjects(commande, {});
let commandesValidees = toutesLesCommandes.filter(toutesLesCommande => toutesLesCommande.statut === "validée");
let totaux = commandesValidees.map(commandesValidee => commandesValidee.total);
totaux.sum()Les variables améliorent :
- La lisibilité — chaque étape est nommée et claire
- La maintenabilité — plus facile à modifier ou débugger
- La performance — évite de recalculer la même chose plusieurs fois
Déclarer une variable
Pour déclarer une variable, utilisez le mot-clé letsuivi du nom de la variable et d'un signe égal. const dit exactement la même chose : une variable de formule n'est jamais réaffectée.
let nomVariable = expression;Par exemple :
let total = [1, 2, 3, 4].sum();
total * 2Dans cet exemple :
let totalcrée une variable nommée "total"[1, 2, 3, 4].sum()est calculé (= 10)- La valeur 10 est stockée dans la variable
total total * 2retourne 20
Important
Chaque déclaration de variable doit se terminer par un point-virgule ;. La dernière ligne de votre formule (celle qui retourne le résultat) n'a pas besoin de point-virgule.
Utiliser plusieurs variables
Vous pouvez déclarer autant de variables que nécessaire. Chaque variable peut utiliser les variables déclarées précédemment.
let prixHT = produit.prixUnitaire * produit.quantite;
let tva = prixHT * 0.20;
let prixTTC = prixHT + tva;
prixTTCIci, chaque variable dépend de la précédente :
prixHTest calculé d'abordtvautiliseprixHTprixTTCutiliseprixHTettva
Exemple avec recherche
Les variables sont particulièrement utiles quand vous devez rechercher un objet et l'utiliser plusieurs fois :
let client = findObject(client, { id: "{{commande.clientId}}" });
let adresse = client.adresse;
let ville = client.ville;
adresse.concat(", ", ville)Bon à savoir
Sans variable, vous devriez appeler findObject deux fois pour accéder à l'adresse et à la ville. Avec une variable, la recherche n'est faite qu'une seule fois.
Bonnes pratiques
Nommez clairement vos variables
Utilisez des noms descriptifs qui expliquent ce que contient la variable.
❌ À éviter
let x = commande.produits.prix.sum();
let y = x * 0.20;✓ Recommandé
let totalHT = commande.produits.prix.sum();
let montantTVA = totalHT * 0.20;Évitez les recherches multiples
Si vous utilisez le même objet plusieurs fois, stockez-le dans une variable.
❌ Lent (2 recherches)
findObject(client, {}).nom.concat(" - ",
findObject(client, {}).email
)✓ Rapide (1 recherche)
let client = findObject(client, {});
client.nom.concat(" - ", client.email)Décomposez les formules complexes
Si une formule fait plus de 2-3 opérations, découpez-la en étapes.
// Étape 1 : Récupérer les données
let commandes = findObjects(commande, {});
// Étape 2 : Filtrer les commandes de l'année
let commandesAnnee = client.commandes.filter(commande => commande.dateCreation.year() === today().year()
);
// Étape 3 : Calculer le total
let totaux = commandesAnnee.map(x => x.totalTTC);
totaux.sum()Exemples pratiques
Générer un code incrémental
let existants = ["MIEL001", "MIEL002", "MIEL003"];
let numeros = existants.map(existant => existant.slice(4, 7).toNumber());
let prochainNumero = max(numeros) + 1;
"MIEL".concat(prochainNumero.padZeros(3))
// Résultat: "MIEL004"Ce code extrait les numéros des codes existants, trouve le maximum, et génère le code suivant.
Calculer une facturation complexe
let produits = facture.lignes;
let sousTotal = commande.produits.map(produit => produit.quantite * produit.prixUnitaire).sum();
let remise = client.fidele ? sousTotal * 0.10 : 0;
let totalHT = sousTotal - remise;
let tva = totalHT * 0.20;
let totalTTC = totalHT + tva;
totalTTCAnalyser des données filtrées
let projets = findObjects(projet, {});
let projetsEnCours = projets.filter(projet => projet.statut === "en_cours");
let nombreProjets = projetsEnCours.count();
let budgetTotal = projetsEnCours.map(projetsEnCour => projetsEnCour.budget).sum();
let budgetMoyen = budgetTotal / nombreProjets;
nombreProjets.concat(" projets en cours - Budget moyen : ",
budgetMoyen.toFixed(2), " €")Prochaine étape
Maintenant que vous savez organiser vos formules avec des variables, découvrez les fonctions de manipulation de tableaux.