Cómo Obtener set de Ids de Lupas en una sola línea de código

En el post anterior vimos como obtener los Ids de una lista de SObjects en una sola línea de código. Sin embargo ese método solo permitía hacerlo con el Id del SObject, es decir si la lista era de Oportunidades podiamos obtener los Ids de esas oportunidades.

Es muy frecuente que cuando escribimos un trigger queramos procesar los registros padre de los que entraron al trigger, por ejemplo, tenemos un trigger de oportunidades pero vamos a actualizar las cuentas de esas oportunidades.

En este caso el método tradicional es iterar sobre la lista del triggerNew e ir agregando a un set de Ids, el Id de cada Cuenta

Sin embargo al igual que en la entrada anterior se puede lograr en un línea de código y adicional con más eficiencia en términos de tiempo de CPU

En esta ocasion volvemos a utilizar el constructor de Map, que nos crea un Mapa con el Id del SObject como llave (el cual extraemos con el método keySet() al final). La diferencia es que el SObject ahora es un AggregateResult que se obtiene de agrupar la lista por el campo lupa que nos interesa.

Es muy importante a la hora de hacer el query colocarle el alias Id al campo lupa. De lo contrario se obtiene una excepción.

Solo funciona “Id” con I en mayuscula. “id” todo en minuscula generaria error tambien. Esto es un bug de la plataforma.

Participa en la conversación

2 comentarios

    1. Salesforce no toma en cuenta el tiempo que se demoren las operaciones de bases de datos (DML, SOQL, SOSL y recientemente HTTP callouts) pero si cuenta el tiempo que se demore en ejecutar el código de APEX. Al usar un loop se descontará el tiempo que tome cada iteración, así que al usar este enfoque el tiempo de CPU se reduciría en esa misma escala.
      Esta es la sugerencia cuando se encuentra el límite ‘Apex CPU time limit exceeded’
      Ver: https://help.salesforce.com/articleView?id=000339361&language=en_US&type=1&mode=1

      Me gusta

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: