Dates récurrentes dans Salesforce
Un mardi sur deux. Le 2e et le 4e vendredi. Le dernier samedi du mois. Ce sont des règles métier ordinaires, et aucun champ Salesforce ne permet d'en exprimer une seule.
Salesforce gère la récurrence pour les événements et les tâches, et s'arrête là. Dès que votre planning vit sur un objet personnalisé (une équipe, une session, une inspection, une astreinte), vous êtes seul, et la réponse habituelle est que quelqu'un calcule les dates sur un calendrier papier puis les saisit à la main.
Deux types de récurrence
On les confond souvent, et elles demandent une logique différente.
| Type | Exemples | Ce qu'il faut |
|---|---|---|
| Par intervalle | Chaque semaine, toutes les 2 semaines, toutes les 3 semaines | Un jour de la semaine et un intervalle de répétition |
| Par occurrence | 1er lundi, 2e et 4e vendredi, dernier samedi | Quelle occurrence dans chaque mois |
La récurrence par intervalle compte à partir d'une date de début et ignore les limites de mois. La récurrence par occurrence repart à zéro chaque mois, et « dernier » est délicat parce qu'il tombe la 4e ou la 5e semaine selon le mois. C'est sur ce seul mot que cassent la plupart des développements maison.
Pourquoi le coder soi-même tourne mal
La longueur des mois varie
« Le 5e lundi » existe certains mois et pas d'autres.
Les années bissextiles
Elles faussent discrètement tout calcul qui suppose une année fixe.
« Une semaine sur deux » a besoin d'un point de départ
Une semaine sur deux à partir de quand ? Deux personnes ne seront pas d'accord.
Week-ends et jours fériés
Il faut parfois les sauter, et vos jours fériés sont dans les données de votre propre org.
Générer trop loin à l'avance
Cela crée des milliers d'enregistrements que personne n'a demandés.
Aucun de ces points n'est difficile isolément. Ensemble, ils représentent une semaine de travail et une source permanente de bugs dans les cas limites.
Générer des dates plutôt que stocker une règle
Sous l'algorithme se cache un choix de conception : stockez-vous la règle pour la développer à la lecture, ou la développez-vous une fois pour stocker les dates obtenues ?
Dans Salesforce, stocker les dates est presque toujours la meilleure réponse. Des enregistrements de dates concrets se prêtent aux rapports, aux cumuls, aux filtres et à l'automatisation comme n'importe quelle donnée. Une règle stockée doit être interprétée partout où elle sert, et les rapports Salesforce ne savent pas l'interpréter du tout. La contrepartie : modifier la récurrence oblige à régénérer les dates. C'est pourquoi le sélecteur de récurrence doit se trouver au moment de la saisie, pas enfoui dans la configuration.
Les trois récurrences, à l'écran
Jours personnalisés d'abord, car aucun champ standard ne l'exprime. Choisissez n'importe quelle combinaison de jours, réglez l'intervalle, donnez une plage, et le calendrier affiche chaque date correspondante avant tout enregistrement.
Jours de semaine et Week-ends sont les deux raccourcis les plus utilisés, et ils font la même chose en un clic.
Montrez les dates avant de valider
Le mieux qu'une interface de récurrence puisse faire, c'est montrer son résultat. Quand l'utilisateur choisit « toutes les 2 semaines le mardi » et voit aussitôt les dates surlignées sur un calendrier, les erreurs se repèrent dans la seconde qui précède l'enregistrement, pas la semaine suivante. La question « une semaine sur deux à partir de quand ? » est aussi réglée immédiatement, puisque le point de départ est visible.
Même chose pour le regroupement. Si votre récurrence donne du lundi au vendredi pendant six semaines, vous voulez peut-être trente enregistrements, ou peut-être six, un par semaine, avec une date de début et de fin. Le décider au moment de la sélection coûte bien moins cher qu'une migration après coup.
Un mardi sur deux, en un clic
Essayez une récurrence dans la démo en direct. Les dates s'affichent sur le calendrier avant l'enregistrement.
- $20/utilisateur/mois, toutes les fonctionnalités
- Essai gratuit de 30 jours, sans carte
- 100 % natif Salesforce
- Sans Apex
- Bientôt disponible sur Salesforce AppExchange