Navegando por
Etiqueta: X++

Asignar campo con valores predeterminados

Asignar campo con valores predeterminados

El título es entendible para cumplir con el objetivo. Ahora bien, no es tan simple desde el punto de vista del proceso para lograr dicho objetivo.  Básicamente, para lograrlo debemos agregar el campo necesario en el método initValue() de la tabla en cuestión. Debe ser el método de tabla para que se replique en todos los objetos que utilizan dicho campo. En este ejemplo, modificaremos el campo InclTax de tipo NoYes a marcarlo siempre (True por defecto). En la tabla…

Leer más Leer más

[AX 2012 R3 – How To] Agregar elementos a un contenedor

[AX 2012 R3 – How To] Agregar elementos a un contenedor

En Microsoft Dynamics AX un contenedor (container) se refiere a un vector (array). A diferencia de otros lenguajes, como C# por ejemplo, el vector acepta múltiple tipos de datos dentro de él, al mismo tiempo. El siguiente código demuestra cómo agregar los elementos a un contenedor: int numero = 1;str cadena = “hola”;long largo = 15684965;container contenedor;contenedor += numero;contenedor += cadena;contenedor += largo;// Imprimimos “hola”info(strfmt(“Vamos a saludar: %1”, conPeek(contenedor, 2))); De esta manera los elementos fueron agregados al vector (contenedor).

[AX 2012 R3 – How To] Obtener dimensión desde cuenta de proveedor

[AX 2012 R3 – How To] Obtener dimensión desde cuenta de proveedor

Cuando trabajamos con diario de facturas, en ocasiones, es necesario obtener la dimensión para la cuenta del proveedor y asignar el número de cuenta (AccountNum) como dimensión. Es por ello, que la siguiente línea de código puede ayudarnos a realizar esa tarea: DimensionDynamicAccount cuentaDinamica;RecId recLedgerDimension, codProv = 50123657;AccountNum numeroCuenta;// Obtenemos el número de cuenta del proveedoraccountNum = VendTable::findRecId(codProv).AccountNum;// Obtenemos la cuenta del proveedor. Si no existe el AX lo crea. Es decir, siempre retorna un valorrecLedgerDimension = DimensionStorage::getDynamicAccount(accountNum, LedgerJournalACType::Vend);// recLedgerDimension…

Leer más Leer más

[AX 2012 R3 – How To] Crear dimensiones desde un container

[AX 2012 R3 – How To] Crear dimensiones desde un container

En ocasiones no tenemos definidas las dimensiones en AX de manera directa, pero lo obtenemos de otras fuentes externas. Entonces, debemos crear un contenedor donde adicionamos los valores necesarios para convertirlos en una dimensión (generalmente hablamos de LedgerDimension). Para lograr nuestro objetivo debemos escribir las siguientes líneas de código: container offsetDim;RecId recIdResult;// Primero el valor a mostrar (Display Value).// Luego la cuenta principal (Main account, generalmente el mismo que Display Value)// Cantidad de dimensiones (número entero)// Dimensiones separadas por comas:…

Leer más Leer más

[AX 2012 R3 – How To] Convertir un tipo genérico a un tipo específico

[AX 2012 R3 – How To] Convertir un tipo genérico a un tipo específico

Muchas veces tenemos la necesidad de utilizar una variable genérica al momento de colocarlo como parámetro de manera que al utilizarlo podamos convertirlo al tipo de dato necesario para la ejecución de la aplicación/rutina con la que estamos trabajando. En esta entrada voy a poner como ejemplo el uso de tablas para poder realizar una determinada acción. En este caso, vamos a recibir como parámetro el tipo de dato Common y dentro del método vamos a convertir en la tabla…

Leer más Leer más

[AX 2012 R3 – How To] Crear un diario de factura con X++

[AX 2012 R3 – How To] Crear un diario de factura con X++

En esta entrada mostraré cómo crear un diario de factura con X++, no es muy complicado pero debemos tener en cuenta una cierta cantidad de puntos para poder hacerlo de manera correcta. El código incluye comentarios. Creación del diario de facturas desde X++ public boolean createVendorInvoiceService(){ int i; LedgerJournalCheckPost jourCheckPost; LedgerJournalTable jourTable; AxLedgerJournalTable header = new AxLedgerJournalTable(); AxLedgerJournalTrans trans; container offsetDim, offsetDimAccount; // Esta es la entrada contra la cuenta del proveedor. DimensionAttributeValueCombination davc; //Tabla con personalizaciones de campos ServiceParameters…

Leer más Leer más

[AX 2012 R3 – How To] Utilizar el objeto RecordInsertList

[AX 2012 R3 – How To] Utilizar el objeto RecordInsertList

La clase RecordInsertList consiste en una lista de elementos (objetos previamente tratados) el cual permite insertar valores de una lista directamente a la base de datos, realizando esta tarea en una sola llamada sin realizar varios viajes.Generalmente, vamos realizando algún cambio en un registro y ya lo actualizamos en la base de datos. Si son pocos registros, no hay drama. Pero si hablamos de miles de registros la performance se ve afectada. Donde más útil resulta esta clase es en…

Leer más Leer más

[AX 2012 R3 – How To] Administrar excepciones desde X++

[AX 2012 R3 – How To] Administrar excepciones desde X++

En AX, las excepciones funcionan de igual manera que en cualquier lenguaje de programación. Lo que deseo demostrar aquí es un bloque de excepciones completo desde X++ y otro que también pueda administrar errores que se producen en una librería DLL. Excepciones en X++ En este caso, el bloque de excepciones se presenta de la siguiente manera: try { //Esto producirá un error de división por cero resultado = num1 / 0;}catch (Exception::Numeric) { //Error específico que se captura cuando…

Leer más Leer más

[AX 2012 R3 – How To] Index versus Index Hint

[AX 2012 R3 – How To] Index versus Index Hint

Debido a este punto he tenido algunas discusiones con mis colegas debido a las diferencias que existen entre estas cláusulas. Index Hint Básicamente, Index Hint en AX 2012 ya está en desuso, para describirlo mejor el AX 2012 lo ignora (es decir, no existe para el). Un ejemplo de Index Hint podrías ser: select * from InventTable index hint GroupItemIdx; Para el AX 2012, la consulta la lee de la siguiente manera: select * from InventTable; Como vimos el Index…

Leer más Leer más

[AX 2012 R3 – How To] Implementar todos los reportes SSRS

[AX 2012 R3 – How To] Implementar todos los reportes SSRS

Muchas veces queremos implementar todos los reportes de una vez. Se complica un poco, si no tenemos la herramienta correcta para realizar dicha tarea. Básicamente se realiza la tarea ejecutando una línea de comandos desde el powershell de Microsoft Dynamics AX. A modo de introducción podemos decir que existen unas cuantas formas de implementar un reporte en el servidor de informes (SSRS – SQL Server Reporting Services). Aquí trataremos los 3 más utilizados y necesarios. Visual Studio Esta es la…

Leer más Leer más