Tips para mejorar el rendimiento: Usando Registros Parciales - Business Central

Breaking

lunes, 30 de noviembre de 2020

Tips para mejorar el rendimiento: Usando Registros Parciales

Programando mejoras en el rendimiento

Nivel: Developer

Normalmente, cuando te vas de vacaciones en verano, no te llevas toda la ropa de invierno que tienes ¿verdad? Pues más o menos es lo que hacemos habitualmente cuando queremos recorrer una tabla o parte de ella, para revisar unos campos y traemos todo el registro.

Mucho nos quejamos sobre el rendimiento en el cloud pero como desarrolladores debemos ir mejorando nuestras extensiones para adecuarlas a la nueva realidad.  Con pequeños tips podemos ir haciendo nuestras aplicaciones más eficientes.  


En un post anterior ya os hablaba de las Lookup Pages de los nuevos tipos de datos (puedes verlo pinchando aquí ), y hoy os vamos a comentar los SetLoadFields, que salió en la versión Business Central 2020 release wave 2.

Registros parciales (SetLoadFields)

De lo que se trata es de mejorar el rendimiento haciendo la consulta del SQL solamente de aquellos campos que realmente vamos a usar.  Especialmente, cuando los datos están en diferentes extensiones ya que la consulta tiene que hacer JOIN de diferentes tablas.



Lo que hacemos es que una vez puestos los filtros (SETRANGE y SETFILTER) que necesitemos, antes de hacer el FINDSET le decimos que traiga solamente los campos necesarios:


En este ejemplo didáctico, solamente voy a usar el campo "Fecha de vencimiento" de los movimientos de cliente, por lo que solamente hago la consulta de ese campo mediante movCliente.SetLoadFields ("Due Date").

No es recomendable usar este comando, si lo que vamos a hacer es Insertar, Borrar, Renombrar registros o hacer un Transferfields, puesto que en entonces el sistema hará internamente una llamada completa para traer todos los campos y no habremos ganado nada.

Añadir campos (AddLoadFields)

En el caso de los reports, Business Central implicitamente ya está usando la carga de registros parciales, haciendo la consulta solamente de los que hemos puesto una Column.  

Por tanto si en el código del report, vamos a usar un campo que no está en el DataSet (no tiene Column) para evitar hacer una llamada completa en ese momento, podemos:

- Crear una columna con ese campo, aunque no vayamos a mostrarlo

- Añadir ese campo con AddLoadFields, en el OnPreDataItem 


Microsoft nos da herramientas para ir mejorando el rendimiento pero nosotros tenemos que seguir actualizándonos como desarrolladores si queremos que nuestros clientes estén contentos con el rendimiento del Cloud.





No hay comentarios: