j.a.estevan

Si no eres parte de la solución, eres parte del problema

Libro: Desarrollo en Microsoft Dynamics AX 2012

Estoy muy ilusionado de poder anunciar el proyecto en el que he estado trabajando este último año, causa principal (probablemente no la única) de que haya publicado con menor intensidad en el blog. Se puede adquirir ya mismo el libro “Desarrollo en Microsoft Dynamics AX 2012“, publicado por Krasis Press en su “colección de las frutas:)

PORTADA Desarrollo en Microsoft Dynamics AX 2012

Es el único libro del mercado escrito en castellano sobre desarrollo en Dynamics AX en general, y también lógicamente sobre desarrollo en AX 2012. Además, está actualizado con las novedades de la reciente versión AX 2012 R3.

Está escrito de manera didáctica y progresiva, de manera que sirve tanto como manual para aprender a desarrollar en Microsoft Dynamics AX, así como de manual de consulta o material de referencia para desarrolladores con experiencia, para buscar algún aspecto concreto utilizando el índice (muy detallado) y el glosario de términos. El índice, el glosario y los dos primeros capítulos se pueden descargar  GRATIS desde la página de compra, además del prólogo que debo agradecer a Salina Marí, de Microsoft.

Se puede adquirir en versión impresa (gastos de envío incluidos en el precio!!) y también en formato electrónico para leer en cualquier dispositivo, en cuyo caso se descarga inmediatamente tras la compra. Esta última quizás sea la mejor opción para los amigos de latinoamérica, que me consta son muchos y fieles :D

La página de compra es la siguiente:

Si lo has comprado, estaré muy agradecido de recibir cualquier comentario al respecto por cualquiera de las vias habituales (twitter, linkedin, comentarios del blog, etc.) o bien en portales específicos como:

Si tienes dudas sobre el contenido descarga GRATIS los primeros capítulos en la página de compra.  Recuerda, es el único libro sobre desarrollo en AX 2012 en español. Espero sinceramente que puedas adquirirlo, que el contenido te permita mejorar y aprender, y que después me cuentes tu opinión para seguir mejorando.

23-07-2014 | deja un comentario

Microsoft Dynamics AX 2012, tablas TempDB y Formularios

En versiones anteriores disponíamos de diferentes técnicas (no muy intuitivas) para utilizar tablas temporales en formularios. Estas mismas técnicas pueden utilizarse en AX 2012, donde además, tenemos diferentes tipos de estas tablas. En particular me interesan las tablas de tipo TempDB porque son las que mejor rendimiento obtienen, al estar gestionadas por el motor de Microsoft SQL Server. Este es uno de esos post que escribo para tener localizada la información y volver a ella en futuras referencias :)

Una versión muy sencilla de uso de estas tablas es similar a como lo hacíamos en la versión 2009, sustituyendo la función setTmpData por linkPhysicalTableInstance. De esta forma, creamos un formulario, añadimos la tabla temporal al origen de datos, etc. y finalmente el método init del formulario queda de esta forma:

public void init()
{
    // ...
   
    super();

    JAEETablaTmp.linkPhysicalTableInstance(JAEETablaTmp::createRecords(desde, hasta));
}

El origen de datos se enlaza con un buffer de la tabla temporal devuelto por la función que inserta los datos. De forma que esos datos que devuelve la función son los que se muestran en el formulario.

Una forma más avanzada de hacerlo, que ofrece más flexibilidad para actualizar los datos posteriormente, es usar una variable de la tabla temporal,que posteriormente podamos manipular. En este caso hay que tener en cuenta el ámbito (scope) de existencia de los datos en la tabla temporal, para lo cual debemos pasar la misma variable a las funciones que manipulen los datos, para no perderlos.

public class FormRun extends ObjectRun
{
    JAEETablaTmp   tmpTable;
}

public void init()
{
    // ...

    super();

    // Hay que pasar el buffer a la función para mantener el ámbito
    JAEETablaTmp::createRecords(tmpTable, desde, hasta);

    // ...

    // Enlazar el buffer con la tabla temporal
    JAEETablaTmp.linkPhysicalTableInstance(tmpTable);
}

Así podremos actualizar los datos posteriormente, en mi caso con la llamada a un botón en el formulario que obtiene parámetros de otros controles, de esta forma:

void clicked()
{
    JAEETablaTmp::createRecords(tmpTable, FromDate.dateValue(), ToDate.dateValue());
    JAEETablaTmp_ds.executeQuery();
}

Destacar cómo la variable temporal declarada en el formulario se pasa a la función que genera los datos para mantener siempre la referencia a la misma variable que está enlazada al origen de datos. La función gestiona los datos en esta misma variable, y la devuelve, de esta manera:

public static client JAEETablaTmp createRecords(
    JAEETablaTmp    _tmpBuffer,
    FromDate        _desde,
    ToDate          _hasta)
{
    // ...

    delete_from _tmpBuffer;

    while select DatePhysical, ItemId, sum(Qty)
        // ...
    {
        _tmpBuffer.clear();
        // ...
        _tmpBuffer.insert();
    }

    return _tmpBuffer;
}

Una particularidad que hay que tener en cuenta es que, en el momento de enlazar la tabla temporal con el origen de datos, la variable buffer no puede estar vacía, o el enlace no se realiza. Ésto no es ningún problema en el primer ejemplo, ya que simplemente no se mostrará ningún dato en el formulario; pero si utilizamos la segunda técnica y el enlace con la variable no se realiza correctamente,  posteriores actualizaciones de la variable no se verán reflejadas en el origen de datos, y tampoco se mostrará ningún error.

Una forma sencilla de evitar esto es insertar un registro vacío en la tabla antes de realizar el enlace con el origen de datos:

public void init()
{
    // ...

    super();

    // Hay que pasar el buffer a la función para mantener el ámbito
    JAEETablaTmp::createRecords(tmpTable, desde, hasta);

    // Si la tabla no tiene registros, la tabla no se enlaza!!
    if (!tmpTable)
        tmpTable.insert(); // IMPORTANTE!

    // Enlazar el buffer con la tabla temporal
    JAEETablaTmp.linkPhysicalTableInstance(tmpTable);
}

Espero que os sirva :D

02-07-2014 | deja un comentario

Libro: Microsoft Dynamics AX 2012 R2 Services

Después de un parón en la publicación de contenidos, debido a un gran proyecto que verá la luz en los próximos días/semanas, vuelvo a la carga con la revisión de un libro escrito por Klaas Deforche y Kenny Saelen y publicado por Packt Publishing, quienes me han echo llegar una versión digital. Tiene este aspecto:

Microsoft Dynamics AX 2012 Services

Este libro es una especie de segunda parte del que ya mencioné (y recomendé encarecidamente) hace algún tiempo titulado Microsoft Dynamics AX 2012 Services. El contenido es muy parecido e igual de recomendable. Esta segunda versión es más larga que el primero, por lo que abunda más en ciertos contenidos aportando más detalles, aunque el contenido en general es prácticamente el mismo, salvo algunos detalles propios de la revisión R2, que en cuanto a servicios web no son muy numerosos.

Aún así, como digo, es un libro muy recomendable, igual que lo era la primera parte. Cuenta con dos autores ya reconocidos y con la experiencia previa de la primera versión, y con un equipo de revisores de primera, así que el contenido esta bien escrito y bien estructurado, sobre un tema que es obligatorio para cualquier implantación de Microsoft Dynamics AX 2012, como son los servicios web.

Si ya compraste la primera versión, probablemente esta última no te aporte grandes novedades, salvo los detalles en los que profundiza más, y las escasas novedades de la R2. Si en su día no lo compraste, claramente recomiendo comprar esta segunda versión porque la lectura es muy interesante.

30-06-2014 | deja un comentario

Microsoft Dynamics AX 2012 R3 Demo VM V1

Microsoft Dynamics AX 2012 R3

Ya se ha publicado la máquina virtual demo de la también recién publicada Microsoft Dynamics AX 2012 R3. Esta máquina virtual viene, como de costumbre, actualizada con las últimas versiones de todo el software (Incluido Windows 2012 R2 y Microsoft SQL Server 2014) y con datos de prueba de las nuevas funcionalidades de esta versión, que son numerosas. Se puede descargar de los siguientes enlaces:

Sin duda la gran ventaja de esta versión es la posibilidad de desplegar la máquina virtual directamente en Azure desde nuestra cuenta de , algo que se agradece viendo los enormes requerimientos de hardware que tienen las últimas versiones de la máquina demo. Los compañeros de TrucosAX han publicado una guía paso a paso de como realizar ese sencillo despliegue, muy recomendable:

 

16-05-2014 | deja un comentario

Portal de Localización para Microsoft Dynamics AX

Sólo comentar que se ha creado un portal donde se recopilan todos los hotfixes y parches publicados referentes a la localización de todos los países, incluidos los cambios legales y de impuestos. Es muy interesante porque se pueden descargar desde un mismo sitio todos los parches que nos interesan. También se puede descargar una lista de hotfixes para poderla consultar en cualquier momento!

15-05-2014 | deja un comentario

Cumulative Update 7 para Microsoft Dynamics AX 2012

Microsoft Dynamics

Hace ya varios meses que se publicó el CU7 para Dynamics AX 2012 R2 (que nos trajo cambios tan importantes como la utilidad AxBuild o la posibilidad de instalar hotfixes por separado). Sin embargo la actualización para las primeras revisiones se ha hecho esperar. Esta semana se ha publicado la última actualización acumulativa para Microsoft Dynamics AX 2012 RTM (6.0.947.0) y Microsoft Dynamics AX 2012 Feature Pack 1 RTM (6.0.1108.0). Esta revisión (6.0.1108.6482), como de costumbre, agrupa todos los hotfixes publicados desde el lanzamiento de la primera versión (ver los CU publicados con anterioridad) y, como ya comenté en post anteriores, se ha cambiado la numeración para ser coherente en todas sus versiones, por tanto no existe CU6 para RTM, el último que se publicó fue el CU5 y éste es el siguiente.

Se puede descargar del siguiente enlace:

A diferencia de las últimas actualizaciones acumulativas para la versión R2 (pronto R3), esta actualización no incluye cambios funcionales (no incluye la utilidad AxBuild, por desgracia), sólo actualizaciones y hotfixes tal como era costumbre en estos paquetes. Es importante echar un vistazo a la página de descarga para revisar las versiones desde las que podamos actualizar, así como los detalles del proceso de instalación en cada caso.

17-04-2014 | deja un comentario