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.
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.
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.
$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
Ce qui fait apparaître le bouton Enregistrer
Les quatre, sinon Enregistrer reste masqué :
| # | Propriété (libellé du générateur) | Page d'enregistrement | Application / Accueil / Experience |
|---|---|---|---|
| 1 | Enregistrement parent | Automatique (recordId) | Static Parent Record Id |
| 2 | Objet associé (Child Object API Name) | Obligatoire | Obligatoire |
| 3 | Champ Date (Date Field API Name) | Obligatoire | Obligatoire |
| 4 | Champ relation (Relationship Field API Name) | Obligatoire | Obligatoire |
Renseignez Config Name avec une configuration de l'assistant et elle remplit les points 2 à 4 pour vous.
Où le placer
| Emplacement | Où le créer | Mise en service | Qui a besoin d'un accès |
|---|---|---|---|
| Page d'application | Lightning App Builder, Nouveau, Page d'application | Activez-la et ajoutez-la à une ou plusieurs applications (elle devient un onglet) | Ensemble d'autorisations MultiDatePick - User |
| Page d'accueil | Lightning App Builder, Nouveau, Page d'accueil | Activez-la comme page par défaut de l'org, ou par application dans le Gestionnaire d'applications, Pages | Ensemble d'autorisations MultiDatePick - User |
| Site Experience | Experience Builder, sous Custom Components | Publiez le site | Profil 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.
| # | Étape | Ce qu'il faut régler |
|---|---|---|
| 1 | Autorisations d'objet | Donnez à 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. |
| 2 | Sécurité au niveau du champ | Lecture 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. |
| 3 | Règle de partage pour les invités | Une 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. |
| 4 | Ensemble 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. |
| 5 | Publier et activer | Publier 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ètre | Pourquoi |
|---|---|
| Propriétaire d'enregistrement par défaut | Les 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és | Une 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èle | Emplacement | Composant | Ajouter |
|---|---|---|---|
| Portail de réservation interne (« Réserver une salle ») | Page d'application | Booking | Capacity Field (Champ Capacité) pour une disponibilité « 3/10 » en temps réel |
| Prise de rendez-vous en libre-service pour les clients | Site Experience | Booking ou Date Time | Un flux quand la requête ou la commande de chaque client est le parent |
| Disponibilités personnelles / congés | Page d'accueil | Dates | Status Colors : Pending ou Approved d'un coup d'œil |
| Inscription à des événements & des promotions | Site Experience ou page d'application | Date Time | Max Dates Allowed limite le nombre de sessions par personne |
| Inscription de bénévoles & aux postes | Site Experience | Booking | Capacity Field pour les « places restantes », Status Colors pour Open ou Full |
| Jalons de projet | Page d'application | Dates ou Date Time | Status Colors (Planned, In Progress, Done) et Two-Month View |
Dépannage
| Symptôme | Solution |
|---|---|
| Enregistrer n'apparaît jamais | L'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 échoue | Pas 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'enregistrement | Faute 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 enregistrements | Ajoutez 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'actualisation | Laissez 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.