j.a.estevan

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

Artículos con la etiqueta ‘Desarrollo’

Modelos E/R de Microsoft Dynamics AX 2012 en AxErd

Buenas noticias! El equipo de documentación de Microsoft Dynamics AX 2012 acaba de publicar un sitio que describe el modelo de datos de la aplicación mediante diagramas Entidad-Relación. En el lanzamiento se encuentran 30 esquemas pero esta previsto realizar muchas más. Han bautizado este nuevo sitio como Microsoft Dynamics AX 2012 R2: AxErd.

También se incluye, en la página de ayuda del propio sitio, información acerca de cómo ampliar y generar nuestros propios esquemas utilizando la herramienta de Ingeniería Inversa integrada en la aplicación (hace tiempo ya hablé sobre ella en este blog!).

ERD CustTrans AxErd

En el post de lanzamiento de este sitio describen su funcionamiento, aunque resulta bastante intuitivo: Se publican esquemas Entidad-Relación para diferentes módulos funcionales y desde diferentes perspectivas (el esquema “nace” de diferentes tablas). También se incluyen listas de tablas relacionadas y un detalle bastante bien conseguido de las listas de claves primarias (PK) y externas (FK) de estas relaciones.

Sin duda una documentación muy solicitada dese hace tiempo (me consta que varias veces desde el programa MVP) pero que ha sido especialmente traumático con el lanzamiento de la versión 2012 y los numerosos cambios sufridos en el modelo de datos de esta nueva versión, tanto para migrar desarrollos como para la carga de datos de los clientes.

 

 

24-05-2013 | hay 1 comentario

AX TIP: Exportar valores de un enumerado en Microsoft Dynamics AX

Hace unos días vimos un código bastante sencillo para obtener una lista de proyectos fácilmente exportable. Otra cosa que es útil exportar (para hacer documentación, por ejemplo) y que no se encuentra en la tabla de metadatos UtilElements son los valores de un enumerado, ya sea el nombre, el Label, el ID, o cualquier combinación de éstos. Para ésto podemos utilizar la clase DictEnum de la siguiente manera:

static void JAEE_GetEnumValueList(Args _args)
{
    DictEnum    enum;
    int         i;
    ;

    enum = new DictEnum(enumNum(AssetTransType));
   
    for (i=0; i<enum.values(); i++)
        info(strfmt("%1 - %2", enum.index2Value(i), enum.index2Label(i)));
}

Y al igual que en el artículo anterior, obtenemos una ventana de InfoLog que podemos copiar y pegar en Excel o donde prefiramos:

Export Enum Value List

07-02-2013 | deja un comentario

AX TIP: Exportar lista de proyectos en Microsoft Dynamics AX

A veces puede ser útil exportar una lista de los proyectos de código que tenemos en Microsoft Dynamics AX. Que yo sepa no hay una manera estándar de hacer esto, pero se puede conseguir muy fácil explorando los metadatos directamente con un código similar a este:

static void JAEE_GetSharedProjectsList(Args _args)
{
    UtilElements    element;
    UtilEntryLevel  utilLevel   = currentAOLayer();
    ProjectNode     projectNode;
    ;

    while select element
        where element.recordType ==   UtilElementType::SharedProject
           && element.utilLevel  ==   utilLevel    // Sólo proyectos en la capa actual
           && element.name       like '???ES*JAE*' // Se puede filtrar como cualquier tabla
    {
        projectNode = xUtilElements::getNode(element);

        info(projectNode.name());
    }
}

Como es una consulta a una tabla (la tabla interna UtilElements), se puede hacer una consulta normal y filtrar los diferentes campos para obtener el resultado deseado. Este es mi resultado:

Export Shared Project List

Desde la ventana del InfoLog se puede copiar y pegar esta lista por ejemplo en Excel y a partir de ahí trabajar con ella normalmente.

31-01-2013 | deja un comentario

Libro: Microsoft Dynamics AX 2012 Services

Tenía pensado empezar esta serie sobre libros con otro título, pero he cambiado de planes por diferentes motivos. En primer lugar, porque este libro tiene mucha culpa de que me haya decidido a empezar la serie, ya que fue el que me picó el gusanillo del mundo editorial, ya que he tenido la suerte de poder colaborar con su edición como revisor técnico (revisando que el lenguaje sea adecuado y comprensible para una audiencia técnica, y revisando que el código incluido en el libro sea correcto y funcione); En segundo lugar porque es el libro de moda. Acaba de ser publicado y su aceptación y crítica están siendo muy buenas, tanto por la comunidad como dentro de Microsoft.

El libro en cuestión se titula Microsoft Dynamics AX 2012 Services, escrito por Klaas Deforche y Kenny Saelen y editado por Packt Publishing tiene este aspecto:

Microsoft Dynamics AX 2012 Services

En cuanto a contenido, el libro no es muy extenso (unas 200 páginas) pero cada una de ellas contiene información interesante. El trabajo con servicios en Microsoft Dynamics AX 2012 se ha vuelto imprescindible, la propia arquitectura interna del estándar ha cambiado para orientarse totalmente al trabajo por servicios y el antiguo framework RunBase (conocido por todos) se ha convertido en el nuevo SysOperation Framework, totalmente orientado a servicios.

Es por esto que este libro es obligatorio en la biblioteca de cualquier programador o empresa de desarrollo que trabaje con Microsoft Dynamics AX 2012, ya que cumple todos los temas sobre servicios que se han implementado y se deben utilizar:

  • Conocer qué son los servicios y para que sirven. Arquitectura, conceptos y puesta en contexto.
  • Publicar y consumir los servicios estándar que vienen con Dynamics AX 2012
  • Publicar nuestros propios servicios web a medida desde Dynamics AX 2012.
  • Consumir servicios web externos desde Dynamics AX 2012.
  • Utilización del nuevo SysOperation Framework (sustituirá al antiguo RunBase Framework).
  • Funcionamiento de los servicios de AIF.

Como se puede ver, al lista de temas es tan extensa que interesa tanto a quienes extienden la funcionalidad de Dynamics AX como a quienes desarrollan aplicaciones externas que deben comunicarse con éste.

22-01-2013 | deja un comentario

Microsoft TechDay & Community Day

La semana pasada tuve la suerte de poder asistir a dos eventos de comunidad organizados por Microsoft en Madrid donde estuvimos invitados MVP‘s, MSP‘s, evangelistas, el equipo de marketing y demás freaks ;)

Día 1

Microsoft TechDay Madrid - Logo

El TechDay empezó con una breve presentación de los logros de Microsoft durante este año (que no son pocos) por parte de Gonzalo Die Socias -DPE Lead de Microsoft España- dando un repaso por todos los hitos cumplidos este año y los que van a venir en un futuro cercano, como presentación a la Keynote.

Microsoft TechDay Madrid - Presentación

30-11-2012 | deja un comentario

Microsoft Dynamics AX 2012 ALM con Team Foundation Server (ALM-III)

En la anterior entrada de esta serie, vimos al detalle cómo instalar y realizar la configuración básica de un servidor Team Foundation Server 2010, y suponíamos también la instalación de un Visual Studio 2008 o 2010 configurado con las actualizaciones suficientes para conectar a este servidor. Nuestro servidor quedó instalado y configurado con una o varias colecciones de proyectos, pero ningún proyecto creado.

En esta entrada vamos a comprobar cómo un servidor de Team Foundation Server 2010 puede ayudarnos a la gestión del ciclo de vida de la aplicación a nivel funcional, sin entrar en detalles técnicos, y cómo esta funcionalidad nos ayudará desde las primeras fases del proyecto en la toma de requisitos, hasta las últimas con la gestión de incidencias o la gestión del cambio.

Lo primero que necesitamos para la gestión de nuestro proyecto es, como cabe suponer, un proyecto. La creación de un proyecto no se puede realizar desde el acceso web de TFS2010 por lo que necesitaremos conectarnos al servidor mediante Visual Studio. En este capítulo trabajaremos con Visual Studio 2010 que casi seguro tendremos instalado en nuestra máquina de desarrollo de Microsoft Dynamics AX 2012.

En la página de inicio de Visual Studio 2010 vamos a elegir la opción Connect To Team Foundation Server:

TFS2010 - Connect to Team Foundation Server

Si nunca hemos conectado a nuestro servidor (o a ninguno) no aparecerá en la lista de servidores, para añadirlo pulsamos Add y escribimos el nombre del servidor donde trabajamos en el capítulo anterior. El asistente se ocupará de completar la URL:

TFS2010 - Add server

03-09-2012 | deja un comentario

AX TIP: Mostrar label con saltos de línea mediante X++

Una característica bastante molesta que te encuentras programando para Microsoft Dynamics AX es la manera en la que se tratan los saltos de líneas al presentar texto en formularios utilizando etiquetas. Por ejemplo, la siguiente línea:

Box::yesNo("Línea 1 \n Línea 2", DialogButton::Yes, "Prueba multi línea!");

Presenta un diálogo normal con un texto en varias líneas (hace caso del carácter \n para poner un salto de línea):

strFmtLB 1 | Bien

Sin embargo al convertir el mismo texto en una etiqueta, el resultado es distinto:

// @TST001: Línea 1 \n Línea 2
Box::yesNo("@TST001", DialogButton::Yes, "Prueba multi línea!");

strFmtLB 2 | Mal

Y ocurre lo mismo si se utiliza una etiqueta con comodines (%1, %2, …) y la función strFmt de esta manera:

// @TST001: Línea 1 \n Línea 2
Box::yesNo(strFmt("@TST001"), DialogButton::Yes, "Prueba multi línea!");

Para que la etiqueta haga caso del salto de línea hay que utilizar la función strFmtLB:

// @TST001: Línea 1 \n Línea 2
Box::yesNo(strFmtLB("@TST001"), DialogButton::Yes, "Prueba multi línea!");

Y así si funcionará:

strFmtLB 3 | Bien

Pero esta función no sustituye a la anterior. Esto es, en caso de tener comodines y saltos de página habrá que incluir las dos funciones. Esto es bastante molesto cuando modificas una etiqueta y pones un salto de línea. Da la impresión de haberse roto algo que antes sí funcionaba, y es que esta función no esta incluida nunca en el código si no es necesaria de forma explícita.

26-12-2011 | deja un comentario

Información de tablas durante el desarrollo en Dynamics AX

Cuando se desarrolla para Microsoft Dynamics AX es muy común tener que consultar tipos de datos, nombres de campos, tablas, etc. para mantener la coherencia entre objetos nuevos y estándar. Esta consulta se puede hacer mediante las propiedades de los formularios (el botón Configurar del menú contextual estándar) y consultando el diseño o la query que se muestra en este formulario o yendo directamente al objeto del AOT:

Pero si esta consulta la tenemos que hacer muy a menudo, como al principio de un gran desarrollo, es molesto tener que hacer todos estos pasos cada vez y se puede consultar mucho mas fácilmente de esta manera:

16-12-2011 | deja un comentario