Buscar en este blog

jueves, 21 de marzo de 2013

Modelos en Dynamics Ax 2012 (exportación e importación de modelos)



Lo nuevo en la versión 2012 de AX son los modelos, es "algo similar" a las capas que ya veniamos manejando en 2009, como dirian en mi pueblo "iguales pero no tan iguales". Finalmente es una agrupación lógica de objetos, con la diferencia a las capas que en este caso los modelos los gestionamos nosotros y podemos crear cuantos modelos queramos o necesitemos.

En esencia están pensados para cuando hay varios partners trabajando en una implementación o cuando existen desarrollos de distintos equipos que no tienen comunicación entre si (ya ven que nunca pasa eso porque los desarrolladores somos bien nice y le hablamos a todo el mundo y reutilizamos código y somos la pura buena onda).

Así que bueno, la gran ventaja de trabajar con modelos es que podemos meter todos los cambios en el modelo, exportarlos y luego importarlos a un nuevo ambiente, por ejemplo de pruebas a producción o como se dice a últimos tiempos, de pruebas a "go live".

Resumiendo, en AX 2012 podemos tener visualmente:
Algo importante antes de que sigas leyendo, cuando se importan los modelos se debe:
1. reiniciar el servicio
2. compilar y sincronizar
*** Este proceso va a tardar de 3 a 4 horas!!! si sigues leyendo toma en cuenta que esto en un ambiente productivo es poco práctico, a menos que quieras importar modelos a las 2 de la madrugada y compilar a esa hora para que los usuarios no sientan que AX esta lentísimo. Bajo advertencia no hay engaño.

Cómo crear o cambiar de modelos

En el ambiente de desarrollo, menu Herramientas -> Administración de modelos -> Crear modelo
Ponemos el nombre del modelo, el publicador, en este caso yo pongo el nombre de mi empresa, una descripción y un nombre corto, como se muestra en la siguiente imagen.
Ya que se creo, podemos cambiar al modelo de dos formas, como en la primera imagen y elegir la primera opción de cambiar modelo actual. Ó de otra forma al dar clic  en el nombre del modelo en la esquina inferior derecha
Para ver a cuál modelo pertenece cada objeto en Herramientas -> Opciones ->Desarrollo poner que se muestren todos los elementos como se muestra en seguida:
Y en el AOT, en todos los objetos veremos como en letras grises del lado derecho aparece el modelo al que pertenecen.

Ahora viene la verdadera utilidad, cómo exportar toooodo el modelo a otro ambiente



Exportar el modelo
Para exportar el modelo se debe abrir el cmd como administrador.

C:\Program Files\Microsoft Dynamics AX\60\ManagementUtilities> axutil export /model:"Logistica de transportes" /file:modeloSit.axmodel

El resultado:

El archivo con la exportación del modelo se guarda por default en: C:\Program Files\Microsoft Dynamics AX\60\ManagementUtilities\

Importar
Para la importación de igual forma se debe abrir el cmd como administrador. 
Para facilidad de importación copiamos el archivo .axmodel en la misma ruta del servidor que donde esta el axutil (C:\Program Files\Microsoft Dynamics AX\60\ManagementUtilities\).

El comando "/conflict:push" se usa para evitar los conflictos de que objetos se encuentren en distintos modelos.
Nota: El modelo no necesariamente debe existir en el nuevo ambiente al que vamos a importar.

C:\Program Files\Microsoft Dynamics AX\60\ManagementUtilities>axutil import /file:modeloSit.axmodel /conflict:push
*** Importante
Cuando se importan los modelos se debe:
1. reiniciar el servicio
2. compilar y sincronizar
*** Este proceso va a tardar de 3 a 4 horas!!!

Aquí una pequeña actualización, el usuario con el que vayan a importar el modelo, debe estar dado de alta como usuario de la base de datos Microsoft Dynamics Ax con los permisos de reader, writer y ddladmin y además en la base de datos MicrosoftDynamicsAx_model debe ser usuario owner. Ahí se los paso al costo porque me llevo como 3 horas darle al punto eh.


Y por cierto, acuerdate de darle click a algún anuncio si el post te sirvio de algo.

Por último, te invito a que te unas a la página de facebook recién creada para estar al día con las actualizaciones del blog y que podamos tener más comunicación. La meta? es hacer la comunidad de habla hispana mas grande sobre Dynamics Ax en cuestiones de desarrollo.



Usuario actual, nombre de usuario, moneda de la empresa Dynamics Ax 2012

Este post solo es de "datos varios", cómo conocer el usuario actual en Ax, el nombre del usuario, el dataAreaId, la moneda y ya.

El id de usuario: curUserId();

Para usar el nombre del usuario en un display:

display Name displayNameDownLab()
{
    UserInfo userInfo;
    ;
    select firstonly Name from userInfo where userInfo.id == curUserId();

    return(userInfo.name);
}

El dataAreaId: curext();

La moneda de la compañia: Ledger::findByLegalEntity(CompanyInfo::find().RecId).AccountingCurrency;

Espero que les sea de utilidad.