j.a.estevan
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:
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):

Sin embargo al convertir el mismo texto en una etiqueta, el resultado es distinto:
Box::yesNo("@TST001", DialogButton::Yes, "Prueba multi línea!");

Y ocurre lo mismo si se utiliza una etiqueta con comodines (%1, %2, …) y la función strFmt de esta manera:
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:
Box::yesNo(strFmtLB("@TST001"), DialogButton::Yes, "Prueba multi línea!");
Y así si funcionará:

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.
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:
HOWTO: Ejecutar tu propio código .NET en Dynamics AX 2009
Aunque esto es algo que tiende a desaparecer en el próximo Microsoft Dynamics AX 2012, de momento es una funcionalidad muy útil en la versión 2009, ya que es la única manera de solventar algunas limitaciones técnicas.
Me estoy refiriendo a la posibilidad de utilizar el .NET CLR Interop para ejecutar desde nuestro código X++ librerías desarrolladas en .NET (ya sea C# o VB.NET). Esta integración también tiene sus propias limitaciones pero amplía de manera notable las posibilidades de desarrollo en AX 2009.
Voy a hacer un ejemplo paso a paso, y el primer paso es crear la propia librería desde Visual Studio. En mi caso voy a utilizar (el ya súper antiguo) Visual Studio 2005 para crear un nuevo proyecto “Biblioteca de clases”:

El código va a ser muy sencillo para no complicar la prueba, simplemente devolverá el nombre del equipo donde se ejecuta el código (esto se puede utilizar para comprender la ejecución de código en el cliente (devolverá la máquina local) o en el servidor (devolverá el AOS):
¿Agile en el canal Dynamics? ¿Locura?
- Insanity: doing the same thing over and over again and expecting different results.- Albert Einstein
- (Locura es hacer lo mismo una y otra vez y esperar resultados diferentes)
Como expuse en mi anterior post: ¿Sure Step vs Agile? Condenados a entendernos, estoy convencido de que un cambio de filosofía hacia el mundo ágil no sólo es positivo sino que es totalmente posible dentro del mundo de los grandes ERP en general, y del canal Dynamics en particular.
Como exponía en ese artículo, hay varios handicap que superar como la resistencia al cambio (hay que cambiar la mentalidad de muchas personas involucradas), la falta de confianza en el sistema para proyectos de largo alcance o incluso la falta de colaboración del cliente. Sin embargo hay ciertos trabajos muy típicos de esta industria que son ideales para empezar a experimentar con este cambio, a pesar de que el proyecto, en general, se gestione con Sure Step:
- Migraciones (cambios de versión): Una migración es un proceso totalmente acotado con tareas claramente definidas y planificables, pero lo importante es que en este proceso no es tan importante la documentación (a menudo no es para nada importante) como la implicación del cliente en el proceso tanto para la realización de diversas pruebas al finalizar cada tarea, como para solucionar consultas sobre la marcha en caso de imprevistos (en las migraciones siempre hay imprevistos). Lo de “ágil” se vuelve literal ya que cuando el proceso de migración termina se tiene que implantar en tiempos de parada del cliente, casi siempre en un fin de semana.
- Soporte post-arranque: Cuando se da por finalizada una implantación nueva y el cliente empieza a utilizar el sistema, a menudo se dará cuenta de que hay pequeños (o grandes) detalles que quiere modificar porque no se habían previsto durante las fases previas. La buena gestión de estas modificaciones puede diferenciar el éxito o el fracaso de una implantación ya que una cosa es que el proyecto finalice, y otra que el cliente de por cubiertas sus necesidades (o las que cree que lo son). Hacerle participe del coste y el esfuerzo de esos “extra” puede ser determinante para cerrar la implantación con todas las partes satisfechas.
- Actualciones de mantenimiento: De la misma manera que en el punto anterior, trabajar con un sistema programable como lo son todos los grandes ERP’s hace que siempre haya pequeños o grandes cambios a realizar para optimizar el trabajo diario. La buena gestión de las necesidades, el desarrollo y la implantación de los cambios sin interferir el trabajo de los usuarios es determinante para que los mantenimientos se finalicen con éxito y sin fricciones.
Si alguien ya ha empezado o esta interesado en estos cambios me encantaría recibir opiniones en los comentarios. Y si alguien quiere comentar o debatir en persona estaré en la próxima Conferencia Agile-Spain 2011 (#cas_2011)
AX TIP: Validar permisos (claves de seguridad) por código
A veces en nuestros desarrollos queremos limitar ciertos procesos a usuarios que tengan activa determinada clave de seguridad (Security Key):

(la imagen es de la documentación oficial)
Para hacerlo utilizaremos las funciones que el estándar dispone para ello. Encontramos un ejemplo de utilización en la clase estándar SysTest:
if (hasSecuritykeyAccess(securitykeynum(SysDevelopment), AccessType::Delete))
{
// Código protegido
...
}
else
{
throw error(strfmt("@SYS97038", securitykeystr(SysDevelopment), enum2str(AccessType::Delete)));
}
Microsoft Dynamics AX 2012 Virtual Launch Event
Hace ya algunos meses que venimos hablando de Microsoft Dynamics AX 2012, desde su presentación en la Microsoft Dynamics AX Technical Conference 2011 de la que ya hablamos en su día, se ha publicado muchísima información sobre las novedades que nos esperan en esta nueva versión.
Aprovechando el Microsoft Dynamics AX 2012 Virtual Launch Event de esta semana se han liberado también multitud de materiales oficiales muy interesantes, algunos accesibles sólo desde Partner Source, y otros totalmente abiertos:
En primer lugar son muy interesantes las demos interactivas que se han publicado en la web oficial del producto y ofrecen una oportunidad de simular de primer mano la utilización de la nueva interfaz tanto para temas de desarrollo como funcional. Sin instalar nada, desde la propia web utilizando Silverlight, vale la pena probarlos:
HOWTO: Máquina virtual demo AX 2012 sin Hyper-V
Como sabemos, Microsoft lanzó la máquina virtual con la demo de la beta de Dynamics AX 2012 en Partner Source. El problema es que es una imagen de máquina virtual para Hyper-V que sólo puede ser lanzada “out-of-the-box” sobre un Windows Server 2008 R2, lo cual no es muy práctico para un equipo portátil o un PC de escritorio de trabajo normal. Microsoft no nos proporciona de forma nativa otras opciones así que para hacerlo funcionar se puede utilizar la solución de Oracle VM VirtualBox.
Todavía así siguen existiendo algunas limitaciones como, por ejemplo: para arrancar un sistema de 64 bits en VirtualBox (como es el caso de esta imagen que intentamos iniciar) necesitamos que el equipo sobre el que lo montemos soporte virtualización por hardware, lo que es común en sistemas modernos pero no tanto en equipos de hacer algunos años. En mi caso es un PC de escritorio con una placa Asus y procesador AMD Quad-Core y esta opción se puede activar en la BIOS:

Dicho esto, lo primero será descargar la imagen de Partner Source (25 ficheros, 17 Gb en total) y como esto tardará un buen rato se puede descargar e instalar mientras tanto el VM VirtualBox de Oracle. Una vez descargados y descomprimidos todos los ficheros procedemos a montarlos de la siguiente manera:
- Creamos una nueva máquina virtual, le damos un nombre cualquiera y elegimos como sistema huésped un Windows 2008 (64 bit). Es importante que sea 64 bits, si esta opción no está disponible es, probablemente, porque en el equipo que intentamos crearla, esta opción no se soporta:
Leer el resto del artículo →
Microsoft Dynamics AX 2009 Demo VM
Esta semana se han publicado las nuevas versiones de las máquinas virtuales de demostración de Dynamics AX, que vienen a sustituir a la actuales que caducan el próximo 15 de Noviembre. Ésta última versión viene en tres configuraciones diferentes:
- Refresh 4
- Refresh 3.5
- Refresh 3
e incluyen versiones actualizadas de las últimas versiones verticales publicadas:
- Lean Manufacturing
- Process Manufacturing
- Services Industries
- Retail
- Intelligence Data Management Framework
En la web del anuncio oficial se pueden ver diversos videos donde explica el contenido de las demos, las maneras de traspasar a ellas demos propias, etc., además de información ampliada.
Para descargarlas se necesita acceso a PartnerSource y para ejecutarlas es necesario Microsoft Virtual PC 2007 que se puede descargar de manera gratuíta en su web.
Microsoft Dynamics AX Test Drive
Hoy he descubierto una de esas herramientas que te hacen el trabajo mas sencillo. Para ser sincero no se desde cuando está publicada pero yo la he descubierto estos días post-vacacionales y me ha parecido sorprendente y realmente útil. Se trata del Microsoft Dynamics AX Test Drive.
Se trata de una web de demostración donde, aparte de algunos vídeos y casos de uso de Microsoft Dynamics AX, podemos ejecutar de forma gratuíta una aplicación completa y con datos de prueba para demostraciones y pruebas.
¿Cómo es posible? Al ejecutar la opción “Try it online” la propia web nos monta un entorno mediante el cual, a través de web (sólo funciona con IE6+), nos permitirá conectar a una máquina virtual creada a este efecto, limpia, con los datos de prueba de la famosa empresa “Contoso” y donde podremos ejecutar de manera completa una instancia de AX con la última versión durante una hora.
¿No es genial? Necesitas probar algo que no tienes claro pero no tienes una instalación AX que se pueda “romper” para hacer las pruebas … ¿Instalar? No! Lo pruebas en la web y la MV se eliminará tras una hora para volver a asignarte otra “limpia” de nuevo. necesitas hacer una demo rápida a un cliente de una funcionalidad concreta ¿Cargar con una máquina virtual? No hace falta!
Hacerlo funcionar es de lo mas sencillo, al pulsar sobre “Try it online” aparecerán mensajes que nos pedirán instalar una serie de “plugins” para el navegador, tras lo cual se ejecuta un asistente que genera el entorno para trabajar, este paso tarda un rato:

Después de esto directamente aparece el entorno virtual mediante el cual podremos conectar a la máquina virtual que nos ha sido asignada (no hay otra):

Y eso es todo, disponemos de una instancia AX completa para funcionar:

Microsoft Dynamics Community
Sirva este post para anunciar que desde ayer este blog forma parte de la Microsoft Dynamics Community, lo cual es una gran motivación para seguir mejorando la calidad y cantidad del contenido publicado.
Pensaba anunciar este hecho junto a unas modificaciones que tengo a punto de terminar para añadir unas pequeñas mejoras (como enlaces a perfiles de twitter y linkedIn), pero se me han adelantado.

