Obtener consulta T-SQL desde X++

Como sabréis, la capa de acceso a datos de MSDyn365FO es un poco diferente del T-SQL. Esto quiere decir que si copias una consulta en AX y la pegas en el SSMS no será válida en el 99% de los casos (y el 1% restante será un select * from tabla).

Para ayudarnos cuando queramos comprobar datos en SQL Server podemos usar el método getSQLStatement de la clase xRecord.

Si ejecutamos este código en Dynamics 365 obtendremos la consulta de SQL en la variable sql. Atentos al modificador generateonly, sin él no se generará la consulta SQL!

Esta es la consulta que obtenemos:

He quitado algunos campos para mejorar la legibilidad, pero con el método getSQLstatement siempre obtendremos todos los campos en la consulta de SQL, incluso si seleccionamos un campo en AX. Como véis tenemos un ? como parámetro en la cláusula where en vez del valor. Si queremos mostrar también el valor tendremos que usar forceliterals en el select de D365:

Y obtendremos esto:

Hay que tener en cuenta que si usamos el generateonly en nuestro select no tendremos datos en el buffer de la tabla:

Esto quiere decir que esta funcionalidad es únicamente para testeo y debugar, si os lo dejáis cuando hagáis el check in de vuestro código… bueno, os lo podéis imaginar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.