Loading

Error de Process Builder "El flujo no ha podido acceder al valor porque no se ha definido o asignado"

Fecha de publicación: Sep 7, 2021
Descripción

Un proceso que lleva a cabo una referencia de objetos cruzados falla si la clave externa (es decir, el campo de relación) de la cual depende la referencia está vacía.

Por ejemplo, si un proceso en el contacto tiene los clientes "[Contacto].Account.Name equals Acme", este proceso sufrirá un error cuando se desencadene en un contacto en el que el valor de Cuenta esté vacío. El error generado en Registros de depuración sería "El flujo no ha podido acceder al valor de myVariable_current.Account.Name porque no se ha definido o asignado".

Solución
Para evitar este tipo de error, use criterios para comprobar si el campo de clave externa (también denominada "relación") es nulo antes de hacer referencias a objetos cruzados basadas en ese campo.

El orden de los criterios sí importa. Debe comprobarse si una búsqueda no es nula antes de evaluar cualquier condición que haga una referencia de objetos cruzados en esa búsqueda.

Continuando con el ejemplo anterior, los criterios del proceso deberían ser "[Contacto].AccountId Is Null False" Y "[Contacto].Account.Name equals Acme" en ese orden. La comprobación sobre si AccountId es nulo debe realizarse antes de la referencia de objetos cruzados que se basa en el campo Cuenta que se está completando.


Cuando se usa "La fórmula es verdadera" en los criterios para ejecutar acciones, se puede usar la siguiente fórmula en este ejemplo:

AND (NOT(ISBLANK( [Contacto].AccountId )), [Contacto].Account.Name = "Acme")

Muchas relaciones estándar incluyen "Id" en el nombre del campo, lo cual en ocasiones genera confusión con respecto a los campos en los que comprobar si hay valores nulos. Siguiendo con el ejemplo anterior, un error común consistiría en intentar comprobar valores nulos en "[Contacto].Account.Id", que es una referencia de objetos cruzados al campo Id. de la cuenta, y devolverá un error cuando la búsqueda de Cuenta esté vacía. Los criterios correctos serían comprobar "[Contacto].AccountId" (que es la búsqueda de Cuenta en el Contacto). Es importante asegurarse de que los criterios comprueban el propio campo de búsqueda, en lugar de hacer una referencia de objetos cruzados al campo "Id" de otro objeto.


Como se menciona en el Problema conocido W-2763830, esta sintaxis de fórmula no funciona al usar criterios basados en fórmulas y hacer referencias a objetos cruzados en un campo Lista de selección (específicamente si se usan las funciones TEXT o ISPICKVAL con referencia en expansión a esa lista de selección). Si necesita hacer una referencia de objetos cruzados a un campo de lista de selección en los criterios del generador de procesos, use criterios basados en condiciones. Si tiene que usar criterios basados en fórmulas, use la función CASE al hacer referencias de objetos cruzados a listas de selección.
 

Nota: También se producirá un error si se usa un campo de fórmula que hace referencia a una búsqueda nula como criterio en su generador de procesos.

 



Consulte también: 
Solucionar problemas de procesos y esta actualización crítica 
Vídeo de Salesforce sobre este tema en YouTube
Número del artículo de conocimiento

000382782

 
Cargando
Salesforce Help | Article