Bientôt disponible sur Salesforce AppExchange

Pages d'application, pages d'accueil & sites Experience

MultiDatePick fonctionne sur toutes les surfaces Lightning, pas seulement sur les pages d'enregistrement. Tout tient en une propriété : Static Parent Record Id.

Voir la configuration Dépannage

Pourquoi ces emplacements sont différents

MultiDatePick enregistre les dates choisies comme enregistrements sur un objet associé, chacun relié à un enregistrement parent. Le composant doit simplement savoir quel parent.

  • Sur une page d'enregistrement (par exemple un enregistrement Event), Salesforce transmet automatiquement au composant l'Id de l'enregistrement en cours (le recordId). Rien de plus à configurer.
  • Sur une page d'application, une page d'accueil ou un site Experience, il n'y a pas d'« enregistrement en cours ». Salesforce ne transmet rien. Sans parent, le composant n'a nulle part où enregistrer : il masque volontairement le bouton Enregistrer plutôt que d'en afficher un qui échouerait au clic.
La solution, c'est la propriété Static Parent Record Id. Collez-y l'Id d'un enregistrement parent précis, et le composant se comporte exactement comme s'il était sur la page de cet enregistrement. C'est une propriété que vous réglez dans le générateur. Elle n'a rien à voir avec une ressource statique Salesforce (Static Resource), une fonctionnalité distincte pour les fichiers téléchargés.

Vous trouverez Static Parent Record Id dans le panneau des propriétés après avoir fait glisser MultiDatePick sur une page d'application ou d'accueil dans Lightning App Builder, ou sur une page dans Experience Builder.

Static Parent Record Id ou un flux : lequel choisir

Static Parent Record Id fait pointer le composant sur un parent fixe : tous les visiteurs voient le même enregistrement. C'est parfait dans certains cas, inadapté dans d'autres. Quand l'enregistrement doit changer selon l'utilisateur ou la visite, pilotez-le plutôt depuis un flux d'écran (Screen Flow). Déposez le composant sur un écran de flux et liez son Parent Record Id à une variable que le flux détermine à l'exécution.

Static Parent Record Id quand l'enregistrement est le même pour tous

  • Une page de réservation publique : une page « demander un rendez-vous » ouverte aux invités, où chaque réservation est rattachée au même enregistrement parent (un bureau, un lieu ou une ressource). Un Id fixe est exactement ce qu'il faut.
  • Un calendrier unique pour toute l'org : un seul enregistrement « Fermetures de l'entreprise », ou une ressource partagée que tout le monde réserve, qui ne change jamais selon l'utilisateur.
  • Un point d'ancrage fixe pour un tableau de bord sur une page d'application ou d'accueil, qui pointe toujours vers le même enregistrement principal.

Règle simple : choisissez Static Parent Record Id quand la réponse à « à qui est cet enregistrement ? » est « le même pour tout le monde ».

Un flux quand l'enregistrement est choisi à l'exécution

  • Enregistrements par utilisateur : chacun ne voit que le sien (par exemple, chaque prestataire arrive sur son propre calendrier de congés). Le flux exécute un élément Obtenir des enregistrements où le propriétaire ou un Contact lié = {!$User.Id}, stocke l'Id et le transmet au composant.
  • Piloté par l'URL : une variable d'entrée du flux lit ?id=… dans le lien, et une seule page sert ainsi de nombreux enregistrements. Cela fonctionne aussi pour les invités, sans connexion.
  • Choisir d'abord : l'écran 1 permet à l'utilisateur de chercher ou de choisir (un employé, une salle, un client) ; l'écran 2 affiche le calendrier de cet enregistrement.
Sites invités : sur un site public sans connexion, « l'utilisateur » est un invité unique et partagé : la résolution par utilisateur ($User) ne s'applique pas. Partagez soit un enregistrement via Static Parent Record Id, soit pilotez-le depuis un paramètre d'URL dans un flux. De vrais calendriers par utilisateur exigent des utilisateurs connectés.

Configuration en une minute

Démo animée de la configuration par Config Name : copier un nom de configuration dans l'assistant de configuration MultiDatePick, déposer le composant Resource Booking sur une page dans Lightning App Builder, coller Config Name et saisir Static Parent Record Id : le calendrier de réservation apparaît avec tous les paramètres de la configuration
Copiez le nom de la configuration dans l'assistant, collez-le avec l'Id de l'enregistrement parent, et le calendrier est prêt. La configuration fournit tous les autres réglages.

Ce qui fait apparaître le bouton Enregistrer

Les quatre, sinon Enregistrer reste masqué :

#Propriété (libellé du générateur)Page d'enregistrementApplication / Accueil / Experience
1Enregistrement parentAutomatique (recordId)Static Parent Record Id
2Objet associé (Child Object API Name)ObligatoireObligatoire
3Champ Date (Date Field API Name)ObligatoireObligatoire
4Champ relation (Relationship Field API Name)ObligatoireObligatoire

Renseignez Config Name avec une configuration de l'assistant et elle remplit les points 2 à 4 pour vous.

Où le placer

EmplacementOù le créerMise en serviceQui a besoin d'un accès
Page d'applicationLightning App Builder, Nouveau, Page d'applicationActivez-la et ajoutez-la à une ou plusieurs applications (elle devient un onglet)Ensemble d'autorisations MultiDatePick - User
Page d'accueilLightning App Builder, Nouveau, Page d'accueilActivez-la comme page par défaut de l'org, ou par application dans le Gestionnaire d'applications, PagesEnsemble d'autorisations MultiDatePick - User
Site ExperienceExperience Builder, sous Custom ComponentsPubliez le siteProfil membre (ou utilisateur invité) : lecture et création sur l'objet et les champs, plus une règle de partage. Sites publics : checklist invités

Astuce pour la page d'accueil : réglez Existing Dates Mode sur readonly pour une vue « au programme » en lecture seule.

Sites invités publics : la checklist en cinq étapes

Une page Experience Cloud publique permet à n'importe qui de réserver sans se connecter. Faites les cinq étapes avant de tester en tant qu'invité. Les étapes 4 et 5 sont les plus souvent oubliées. Voyez le résultat sur la démo en direct, un site invité public.

#ÉtapeCe qu'il faut régler
1Autorisations d'objetDonnez à l'utilisateur invité du site la Lecture, et la Création si les invités soumettent, sur chaque objet utilisé par le composant. Les invités ne peuvent jamais Modifier ni Supprimer. C'est une règle de la licence invité de Salesforce, valable pour toutes les applications : gardez la modification et l'annulation sur des pages derrière une connexion.
2Sécurité au niveau du champLecture sur chaque champ affiché par le calendrier. Modification sur chaque champ qu'il écrit, y compris les champs de statut, d'heure et de relation. Incluez aussi les champs d'heures ouvrables et de fermeture de la ressource.
3Règle de partage pour les invitésUne règle de partage en lecture pour l'utilisateur invité, afin que les invités voient les enregistrements. Le paramètre par défaut externe de l'objet à l'échelle de l'organisation doit être Privé pour que la règle s'applique. Une règle déployée sous forme de métadonnées demande un clic sur Recalculer dans les Paramètres de partage.
4Ensemble d'autorisations invitéAttribuez MultiDatePick - Guest à l'utilisateur invité du site. Il porte l'accès aux classes Apex par lesquelles le calendrier charge ses données, ainsi que les droits de lecture et de création qu'un invité peut avoir sur les objets MultiDatePick.
5Publier et activerPublier et activer sont deux étapes distinctes. Les invités ne voient qu'un site activé.

Deux paramètres d'org dont les invités ont aussi besoin

ParamètrePourquoi
Propriétaire d'enregistrement par défautLes invités ne peuvent pas posséder d'enregistrements : Salesforce attribue chaque réservation d'invité à un propriétaire par défaut. Réglez-le dans Espaces de travail Experience, Administration, Préférences.
Accès en lecture aux enregistrements référencésUne réservation qui pointe vers une ressource ou un parent exige que l'invité ait la lecture sur cet enregistrement, sinon l'enregistrement échoue avec une erreur de référence croisée. Utilisez un objet personnalisé pour tout ce que les invités réservent : l'accès invité aux Contacts et aux Comptes est très restreint.

Vous préparez une page de réservation publique ? Réservation en libre-service sur un site Salesforce Experience Cloud explique ce que les invités peuvent faire et quelle vue leur montrer.

Six modèles hors de la page d'enregistrement

ModèleEmplacementComposantAjouter
Portail de réservation interne (« Réserver une salle »)Page d'applicationBookingCapacity Field (Champ Capacité) pour une disponibilité « 3/10 » en temps réel
Prise de rendez-vous en libre-service pour les clientsSite ExperienceBooking ou Date TimeUn flux quand la requête ou la commande de chaque client est le parent
Disponibilités personnelles / congésPage d'accueilDatesStatus Colors : Pending ou Approved d'un coup d'œil
Inscription à des événements & des promotionsSite Experience ou page d'applicationDate TimeMax Dates Allowed limite le nombre de sessions par personne
Inscription de bénévoles & aux postesSite ExperienceBookingCapacity Field pour les « places restantes », Status Colors pour Open ou Full
Jalons de projetPage d'applicationDates ou Date TimeStatus Colors (Planned, In Progress, Done) et Two-Month View

Dépannage

SymptômeSolution
Enregistrer n'apparaît jamaisL'une des quatre propriétés est vide. Hors page d'enregistrement, c'est généralement Static Parent Record Id.
Le calendrier se charge, l'enregistrement échouePas d'accès à l'objet. Attribuez l'ensemble d'autorisations MultiDatePick - User ; sur un site, donnez la lecture et la création au profil membre ou invité.
« Field does not exist » à l'enregistrementFaute de frappe dans le nom d'API. Copiez-le depuis Configuration, Gestionnaire d'objets. Un préfixe d'espace de noms ne sert que pour les objets d'un autre package (par ex. acme__Visit_Date__c).
Les membres du site ne voient pas leurs enregistrementsAjoutez une règle de partage (ou assouplissez les paramètres par défaut à l'échelle de l'organisation) sur l'objet enfant.
Les dates enregistrées disparaissent à l'actualisationLaissez Load Existing Dates activé (il l'est par défaut).
Static Parent Record Id « n'est pas valide »Utilisez un vrai Id de 15 ou 18 caractères de l'objet parent, celui vers lequel pointe le Relationship Field.

Autre chose ? La page Dépannage présente chaque message de configuration avec une capture d'écran et une solution.

Un autre problème qui n'est pas traité ici ?

Envoyez-nous vos questions par e-mail. Nous serons ravis de vous aider.

Écrire à Support@MultiDatePick.com Retour à la prise en main Essayer la démo en direct