Passer au contenu principal
Base de connaissancesv15.1

Champs de formule

La valeur d'un champ personnalisé de formule est automatiquement calculée par Celoxis selon sa formule. Ce calcul est effectué à chaque affichage du champ. Le langage d'expression des formules est sophistiqué et permet des manipulations de données complexes, notamment des opérations arithmétiques et des transformations de chaînes de caractères et de dates.

Syntaxe

Celoxis interprète tout ce qui se trouve entre ${ et } comme une expression. Les formules peuvent être définies comme des expressions pures, par exemple ${me.budget * 0.10}, ou contenir un mélange de texte et d'expressions, comme « Le projet ${me.name} a été créé le ${me.created} ». tout ce qui est entre accolades ${ et } est traité comme une expression et évalué, tandis que tout ce qui se trouve à l'extérieur est copié tel quel dans le résultat. Par exemple, si les formules étaient associées à un projet nommé XYZ et dont le budget était de 10 000 $, le résultat serait 1000 et « Le projet XYZ a été créé le jeudi 20 juin 2013 à 08:30:16 EDT » .

L'opérateur point

L'opérateur point permet de faire référence à une propriété d'un objet. Dans l'exemple `${me.budget * 0.10}`, ` me.budget` fait référence au budget du projet si le champ personnalisé est associé à un projet. L'opérateur point peut également servir à appeler une fonction (ou méthode) d'un objet. Dans l'exemple `${me.name.toUpperCase()}`, ` toUpperCase` est un appel de fonction qui convertit le nom du projet en majuscules.

Opérateurs

  • Arithmétique: +, - (binaire), *, / et div, % et mod, - (unaire)
  • Concaténation de chaînes: +=
  • Opérateurs logiques: et, &&, ou, ||, non, !
  • Relationnel: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Les comparaisons peuvent être effectuées avec d'autres valeurs ou avec des littéraux booléens, de chaîne de caractères, entiers ou à virgule flottante.
  • Vide : L’ vide est une opération préfixe qui permet de déterminer si une valeur est nulle ou vide.
  • Conditionnelle: A ? B : C. Évaluez B ou C, selon le résultat de l'évaluation de A.
  • Affectation: =
  • Point-virgule: ;

La priorité des opérateurs, du plus élevé au plus bas et de gauche à droite, est la suivante :

  • [] .
  • () (utilisé pour modifier la priorité des opérateurs)
  • - (unaire) non ! vide
  • * / div % mod
  • + - (binaire)
  • +=
  • < > <= >= lt gt le ge
  • == != eq ne
  • && et
  • || ou
  • ? :
  • =
  • ;

Mots réservés

Les mots suivants sont réservés à l'EL et ne doivent pas être utilisés comme identifiants :

etoupaseq
neltgtle
gevraiFAUXnul
instance devidedivmod

Exemples de base

FormuleRésultat
${1 > (4/2)}FAUX
${4.0 >= 3}vrai
${100.0 == 100}vrai
${(10*10) ne 100}FAUX
${'a' < 'b'}vrai
${'hip' gt 'hit'}FAUX
${4 > 3}vrai
${1.2E4 + 1.4}12001.4
${3 div 4}0.75
${10 mod 4}2
${!empty me.code}Renvoie faux si le code est nul ou une chaîne vide.

Fonctions utilitaires

L'ensemble suivant de fonctions d'assistance a été fourni :

formatDate(date)La valeur formatée de la date (sans l'heure) selon les préférences du spectateur.
formatDateTime(datetime)Valeur formatée de la date et de l'heure selon les préférences du spectateur.
formatNumber(nombre)La valeur formatée du nombre selon les paramètres régionaux du spectateur.
formatDevise(nombre)La valeur de la devise est formatée selon la devise spécifiée dans les préférences de l'entreprise et le format numérique selon les paramètres régionaux du destinataire. Ex. : 25 000 $
heuresToHHMM(nombre)Formate les heures au format HH:MM. Par exemple, 2,5 deviendra 2:30

Écrire des formules multilignes

Pour écrire le code de la formule sur plusieurs lignes, utilisez les = et ; . La valeur de retour est la dernière instruction de la formule. Par exemple :

${ apc = me.actualPercentComplete; ppc = me.plannedPercentComplete; (apc - ppc)/ppc }

Le type de données renvoyé par la formule

Lors de la définition d'une formule, vous devez sélectionner un type de données. Ce type indique au système le résultat attendu. Celoxis formate automatiquement la valeur de retour en fonction du type de données. Par exemple, si vous indiquez un type de retour monétaire et que votre formule renvoie le nombre 10 000, le résultat sera de 10 000 $. Celoxis formate automatiquement le nombre et y ajoute le symbole monétaire.

L' objet moi

L' « me » dans la formule représente l'objet pour lequel la formule est évaluée. Par exemple, supposons que notre champ de formule « Avance client » soit défini comme ${me.budget * 0.1} , c'est-à-dire qu'il représente 10 % du budget. Si nous avons associé ce champ à la fois aux projets et aux tâches, alors lors de l'évaluation de la formule pour un projet, l' « me » sera un projet, tandis que pour une tâche, il sera une tâche.

Référence de terrain

Pour afficher la liste des champs disponibles, cliquez sur l' Référence du champ dans l'écran d'ajout/modification d'un champ personnalisé. Cliquez sur l'icône « + » pour développer la liste des variables disponibles pour les différentes entités.

Gestion des erreurs

En cas d'erreur lors de l'évaluation d'une formule (par exemple, si vous avez passé un nombre au lieu d'une chaîne de caractères), le message « ERR ! » s'affiche . Survolez-le avec votre souris pour obtenir une description plus détaillée du problème.

Exemples

Supposons que nous ayons un projet avec les données suivantes.

ÉtiquetteChampValeur
IDENTIFIANTidentifiant1234
NomnomAménagement d'un espace de bureau
CommencerdémarrerCalendrier10 janvier 2011
Budgetbudget5000
coût estimécoût estimé4000
coût réelcoût réel3800

Nous allons maintenant examiner quelques exemples simples. Nous supposerons que la formule est associée à des projets et que l'exemple de résultat concerne le projet décrit précédemment.

FormuleSortirCommentaires
${me.id * 10}12340L'identifiant est multiplié par 10
moi.id * 10moi.id * 10Non inclus dans ${} et donc copié tel quel dans la sortie.
ID:${me.id}ID : 1234Texte mêlé à une expression
${me.name + 100}SE TROMPER!Impossible d'effectuer des opérations arithmétiques sur le type String.
${moi.abcd}SE TROMPER!« moi » ne possède pas de propriété nommée abcd.
${formatDate(me.startCalendar)}10 janvier 2011Formate la date de début selon le style de format de date de l'utilisateur.
${me.actualCost gt (me.budget*.9) ? 'ALERTE' : 'OK'}ALERTEUn exemple de comment écrire une structure if/then/else
${formatCurrency(me.budget)}$ 5,000En supposant que votre symbole monétaire soit $
${round(((me.budget - me.actualCost)*100)/me.budget)}%24%Calcule le pourcentage du budget restant

Exemple avancé : Votre propre indicateur de santé de planning

Supposons que vous souhaitiez disposer d'un indicateur de santé du planning basé sur des données de référence, c'est-à-dire la date que vous avez réellement promise au client plutôt que sur la date de fin du plan actuel.

Vous allez créer un champ de formule, l'associer à des projets, définir son type de données de sortie sur Texte et saisir la formule comme suit :

${ pc = me.actualPercentComplete; pFinish = me.projectedFinishCalendar; bFinish = me.baselineFinish; now = Date.now(); label = 'Inconnu'; label = Date.before(pFinish, bFinish) ? 'À temps' : label; label = Date.after(pFinish, bFinish) ? 'À risque' : label; label = Date.after(now, bFinish) ? 'En retard' : label; label = pc == 100 ? 'Terminé' : label; label }

Dans la Couleur de la formule, indiquez les correspondances comme suit :

RésultatCouleur
À l'heureVert
À risqueOrange
En retardRouge
ComplétéBrun

Exemple de sortie

Essai gratuitRéserver une démo