Adaptaciones de AX para la ley del IVA 2010

Microsoft lleva ya algún tiempo publicando información y objetos actualizados para adaptar nuestro AX a la nueva reforma europea de la ley del IVA 2010. Han creado un punto de partida donde recopilan toda esta información y descargas llamada AX VAT 2010 Landing Page en PartnerSource.

De entre toda esa información cabe destacar la descarga de los nuevos objetos para:

Así como los whitepapers:

Entre otras muchas cosas!

Sin votos aún

Reindexar el AOT para encontrar objetos perdidos

Hace unos dias me ocurrió un caso que no había visto antes y que paso a compartir. En un entorno basado en Microsoft Dynamics AX 3 SP1 (algo antiguo) empezaron a "desaparecer" objetos del AOT, concretamente todos los formularios situados a partir de uno determinado.

Problema AOT Reindex

Es una situación extraña porque los objetos no eran visibles en el AOT pero obviamente estaban ahí, ya que la funcionalidad asociada a ellos funcionaba correctamente, el problema es que resultaba imposible modificarlos.

Se me ocurrió probar soluciones típicas como compilar la aplicación entera, sincronizar la base de datos, eliminar los ficheros de índices (.aoi) de la aplicación, reiniciar el AOS, ... en principio, no funcionó nada.

La solución la encontró un compañero de proyecto en el menú:

  • Archivo > Abrir > Menú > Objetos de la aplicación

Objetos de la aplicación

Ejecutando las ultimas 4 opciones (Actualizar + Reindexar) por orden los formularios reaparecieron y todo volvió a funcionar con normalidad:

Solucion AOT Reindex

Sin votos aún

White Paper sobre la integración AX 2009 - Project Server 2007

Microsoft publicó el mes pasado un interesante White paper técnico que explica la configuracion detallada a realizar en ambas partes para conseguir una integración entre Microsoft Dynamics AX 2009 y Microsoft Office Project Server 2007, de manera que ambos programas puedan compartir información.

Es una característica muy interesante para la creación de un front-end especializado en proyectos para la gestión de éstos en AX, una lectura recomendable.

Sin votos aún

Run as different user con ShellRunas

Cuando se trabaja con diferentes entornos de AX resultaba útil la funcionalidad "Ejecutar como usuario diferente ..." (Run as ...) disponible en Windows XP. Existe la posibilidad de recuperar esta funcionalidad en Windows Vista / 7 mediante el complemento ShellRunas publicado por Sysinternals.

ShellRunas 2

Se puede descargar gratuitamente desde TechNet y su instalación es muy sencilla, a saber:

  • Descargar y descomprimir el fichero
  • Copiar ShellRunas.exe a la carpeta \Windows\System32
  • Abrir una línea de comandos y ejecutar: shellrunas /reg
  • Aceptar el mensaje de confirmación y la opción aparecerá a partir de ahora en los menús de Windows.

ShellRunas 1

Para desinstalarlo se puede ejecutar el comando shellrunas /unreg, en la página de TechNet se encuentran opciones de comando adicionales.

Sin votos aún

AX 2009 EP Development CookBook

Ayer, el equipo del Enterprise Portal Blog publicó un resumen-guía de desarrollo en Enterprise Portal. que han llamado AX 2009 EP Development CookBook Un completo artículo en formato imprimible de casi 40 páginas muy interesante y gratuíto para su descarga desde aquí:

Sin votos aún

Microsoft Dynamics AX, ¿Por dónde empiezo?

Introducción

La documentación existente en la red sobre desarrollo en Microsoft Dynamics AX es abundante, aunque a menudo mal estructurada, lo que puede ser un problema al principio, si alguien decide aprender a programar AX por su cuenta.

Como introducción se puede consultar el artículo correspondiente de Wikipedia, donde se encuentra una breve historia del producto (antes llamado Axapta), un resumen de los módulos funcionales mas importantes, versiones, arquitectura, y una introducción a su IDE de desarrollo: MorphX y su lenguaje de programación: X++

 

Libros

El libro Morph IT es probablemente el primer libro sobre desarrollo en AX, escrito bajo la version AX 3.0 SP4 prácticamente todo el contenido sigue siendo válido en AX 4 y 2009, salvo pequeños detalles fácilmente identificables. Es para mi opinión el mejor para empezar, y es gratis.

La serie "Inside Microsoft Dynamics AX" está escrita directamente por los desarrolladores de AX, tiene un nivel mas alto que el primero y es un libro ideal para consolidar los conocimientos de cualquier desarrollador AX, muy recomendables. El primero se puede descargar gratuítamente en PDF, el segundo sólo existe en versión papel y es prácticamente imposible encontrarlo en librerías españolas.

 

Recursos Web

 

comunidades, blogs, foros, ...

 

PartnerSource, CustomerSource y certificación

El acceso a PartnerSource/CustomerSource da acceso a la descarga de materiales de los cursos oficiales de certificación de Microsoft que es, probablemente, la mejor documentación disponible para el aprendizaje de AX, así como el acceso a toda la documentación que Microsoft publica sobre el producto (WhitePapers, Manuales, herramientas, etc, ...).

El acceso a estos portales depende del contrato de licencia del que se disponga con Microsoft tanto si se es Cliente, como Partner.

Sin votos aún

Feliz Navidad! & a happy new year

Feliz Navidad! & a happy new year
Sin votos aún

Valor devuelto, no funciona en sub-modelos heredados

Al configurar una variable de modelo de producto, existen dos opciones para configurar como se comportará esta variable en caso de utilizar modelos heredados (un modelo de producto ejecuta otro modelo de producto):

Product Builder | Variables

La opción "Valor devuelto" no funciona en AX 3 y 4 (el problema esta corregido en la 2009) debido a un fallo en la programación de las clases estándar del configurador de producto.

Para solucionarlo editar el método de clase \Classes\PBATreeNodeCompile\PBAVarMethods() en su línea #101 y modificar la línea:

PBATableVariable.Vartype            == PBAvartype::Datatype     &&


por:

PBATableVariable.Vartype            <= PBAvartype::Datatype     &&


Después de este cambio será necesario compilar todos los modelos de producto para volver a generar sus clases corregidas.

Sin votos aún

Error en modelo de producto con opciones de gráfico AX4

Si AX 4 está configurado en un idioma que no es inglés (yo lo he probado en castellano pero entiendo que funcionará de la misma manera en otros idiomas), al ejecutar un modelo de producto al que se hayan configurado opciones de gráfico, AX mostrará un error de ejecución. Es un error de traducción del estándar que ya está corregido en la versión 2009.

Para solucionarlo, editar el método de clase \Classes\PBAFrontEndControlWin\run(), en su línea #8, y modificar la línea:

graphicControl = element.design().controlName('Graphic');


por:

graphicControl = element.design().controlName("@SYS40661");


Después de este cambio será necesario compilar todos los modelos de producto para volver a generar sus clases.

Sin votos aún

Optimización de rendimiento para Product Builder

El configurador de producto de AX es uno de los módulos que personalmente mas me gustan de este ERP. Su potencia y utilidad son innegables pero también lo és que no resulta demasiado eficiente en algunos casos. Uno de sus puntos débiles es el rendimiento al mostrar los formularios configurables y para ello se ha publicado en el blog Dynamics AX Live un interesante y sencillo truco para reducir el tiempo de carga de los formularios del PB.


La idea es no forzar a AX a aplicar propiedades de estos formularios que ya están aplicadas, cosa que el estándar sí hace, y con esto se reducirán muchísimas llamadas al formulario sobre todo en los que dispongan de muchas variables.


Para ello iremos al método SetControlProperties de las clases PBAFrontEndControl y PBAFrontEndControlWin y buscamos el siguiente código:


dataSource.object(valueTmpBuildForm.activeField()).enabled(enabled);
dataSource.object(valueTmpBuildForm.activeField()).mandatory(mandatory);
dataSource.object(valueTmpBuildForm.activeField()).visible(visible);


y sustituimos por este:


if(dataSource.object(valueTmpBuildForm.activeField()).enabled() != enabled)
	dataSource.object(valueTmpBuildForm.activeField()).enabled(enabled);
if(dataSource.object(valueTmpBuildForm.activeField()).mandatory() != mandatory)
	dataSource.object(valueTmpBuildForm.activeField()).mandatory(mandatory);
if(dataSource.object(valueTmpBuildForm.activeField()).visible() != visible)
	dataSource.object(valueTmpBuildForm.activeField()).visible(visible);


Mientras escribía este post he recordado que tengo un documento en alguna parte de mi disco duro con un par de bugs localizados en el estándar del Product Builder. En cuanto lo encuentre los publicaré.

Sin votos aún