Loading

Erreur de Générateur de processus « Le flux n'a pas pu accéder à la valeur car il n'a pas été défini ou attribué »

Date de publication: Sep 7, 2021
Description

Un processus qui effectue une référence inter-objets échouera lorsque la clé étrangère (champ de relation) dont dépend la référence n’est pas renseignée.

Par exemple, si un processus sur contact a le critère « [Contact].Account.Name égal à Acme », ce processus échouera lorsqu’il sera déclenché sur un contact si le compte est vide. L’erreur générée dans les journaux de débogage serait « Le flux n'a pas pu accéder à la valeur pour myVariable_current.Account.Name car il n'a pas été défini ou attribué ».

Résolution
Pour éviter ce type d’erreur, utilisez des critères pour vérifier si le champ de la clé étrangère (c’est-à-dire de relation) est null avant d’effectuer des références inter-objets en fonction de ce champ.

L'ordre des critères est important. Il convient de vérifier qu'une référence n’est pas null avant d’évaluer les conditions qui effectuent une référence inter-objets dans cette référence.

Si nous continuons l’exemple ci-dessus, les critères du processus doivent être « [Contact].AccountId est Null False » ET « [Contact].Account.Name égal à Acme » dans cet ordre. Il convient de vérifier que AccountId est null avant la référence inter-objets qui repose sur le champ Compte renseigné.


Lors de l’utilisation de « L'évaluation de la formule est positive » dans les critères d'exécution d'actions, la formule ci-dessous peut être utilisée dans cet exemple :

ET (NOT(ISBLANK( [Contact].AccountId )), [Contact].Account.Name = "Acme")

De nombreuses relations standard incluent « Id » dans le nom du champ, ce qui porte parfois à confusion quant aux champs à vérifier pour les valeurs null. Si nous continuons l’exemple ci-dessus, une erreur courante consiste à tente de rechercher null dans « [Contact].Account.Id », qui est une référence inter-objets au champ Id sur le compte et échouera lorsque la référence de compte est vide. Le critère correcte vérifiera « [Contact].AccountId » (qui est la référence de compte sur le contact). Il est important de s’assurer que le critère vérifie le champ de référence plutôt que d’effectuer une référence inter-objets au champ « Id » sur un autre objet.


Comme indiqué dans Known Issue W-2763830, cette syntaxe de formule ne fonctionne pas lorsque vous utilisez des critères basés sur une formule et effectuez une référence inter-objets à un champ de liste de sélection (notamment lorsque vous utilisez les fonctions TEXT ou ISPICKVAL avec la référence d’élargissement à cette liste de sélection). Si vous avez besoin d'une référence inter-objets à un champ de liste de sélection dans les critères du générateur de processus, utilisez des critères basés sur une condition. Si vous devez utiliser des critères basés sur une formule, utilisez la fonction CASE lorsque vous effectuez des références inter-objets aux listes de sélection.
 

Remarque : L’erreur se produira aussi si un champ de formule référençant une référence null est utilisé comme critère dans votre générateur de processus.

 



Voir aussi : 
Processus de dépannage et cette mise à jour critique 
Vidéo Salesforce sur YouTube concernant cette rubrique
Numéro d’article de la base de connaissances

000382782

 
Chargement
Salesforce Help | Article