Les requêtes personnalisées permettent de pouvoir naviguer dans le modèle d'objet Salesforce sans forcément avoir un lien avec le contexte de départ.
Pré-requis
✓ Avoir déjà fait la configuration d'un modèle principal
✓ Avoir un objet principal configuré
✓ Maîtriser les notions de bases des requêtes SOQL
Qu'est ce qu'une requête personnalisée ?
La requête personnalisée ajoute un second point d'entrée dans le data model, en plus de l'objet principal. Elle permet d'accéder à des objets sans lien direct avec lui. C'est utile dans de rares cas où le data model ne permet pas de remonter jusqu'à la donnée souhaitée.
Quand utiliser une requête personnalisée ?
Dans le cas ou vous souhaiter afficher des données d'un objet inaccessible depuis l'objet principal, c'est à dire sans lien avec l'objet principal.
Si l'objet principal est Contact on peut accéder à certains objets sans contrainte, mais d'autres sont isolés et impossible à atteindre :
✅ Son compte (objet parent)
✅ Ses requêtes (objet enfant)
✅ Le propriétaire du compte (objet parent)
❌ La session de formation
❌ Les opportunités du compte

Solution : Ajouter une requête personnalisée, qui va créer un 2e point de départ c'est à dire un nouvel objet principal qui permettra d'accéder aux informations inaccessibles.
Si l'objet principal est Compte et que nous souhaitons récupérer le contact de type décisionnaire pour afficher son nom et prénom dans le document généré

Comment rédiger une Requête qui ne renvoie qu'un seul résultat avec un lien avec l'objet principal
La syntaxe SELECT Id FROM [objet] WHERE [critère1] AND [critère2] permet de récupérer un record précis répondant aux critères définis
Paramètres :[objet] = l'objet sur lequel porte la requête (ex. : Contact)[critère1] = critère obligatoire permettant de récupérer uniquement les enregistrements liés à l'objet principal. Il doit faire le lien avec le {RecordId} (ex. : AccountId = {RecordId}).[critère2] = (optionnel) : critère supplémentaire permettant de cibler plus précisément l'enregistrement recherché (ex. : Type__c = 'Décisionnaire')
Dans le cas où on souhaite afficher des informations sur la Session de formation, objet isolé, initialement inaccessible. On ajoutera une requête personnalisée "Session de formation" qui renvoie un seul résultat comme la date de la prochaine session de formation.



Comment rédiger une Requête qui ne renvoie qu'un seul résultat sans lien avec l'objet principal
La syntaxe SELECT Id FROM [objet] WHERE [critère] permet de récupérer un record précis répondant au critère défini
Paramètres :[objet] = l'objet sur lequel porte la requête (ex. : Session__c)[critère] = critère selon lequel récupérer le bon record (ex. : Name = 'Formation')
Pour exemple
Dans notre exemple, on veut récupérer la session de formation nommée "Formation Gonexa" créé le plus récemment. La requête sera sera SELECT Id FROM Session__c WHERE Name = 'Formation Gonexa' ORDER BY CreatedDate Asc
Astuce
Utilisez Salesforce Inspector pour trouver la requête qui permet de renvoyer le bon record.
Dans le cas où on souhaite afficher les certifications de la session de formation, on ajoutera un objet enfant à l'objet secondaire.

Dans le cas d’une requête personnalisée avec plusieurs résultats, l’objet choisi peut ou non être lié à l’objet principal. Il se trouvera dans un tableau dans le document.

Si l'objet principal est Compte et que nous souhaitons afficher les membres de campagnes correspondant aux contacts du compte.
Dans le cas où on souhaite afficher tous les produits de type Options disponibles dans Salesforce et les ajouter dans un tableau.

