Otra cosa importante es que funciona tanto en dynamics AX 4.0 como en el 2009.
Partes de configuración
Para importar o exportar data desde dynamics AX en formato XML, es necesario que existan los siguientes objetos:
a) Tabla: donde se encuentre la data que será importada o exportada.
b) Clase AxBC: que es un contenedor para la tabla y es utilizado por AXD-Framework por la data por
defecto en los campos de la tabla y actualizar las tablas relacionadas.
c) Query: es usado por Axd-framework para la selección de data de la tabla o del archive XML.
d) Clase Axd: representa el documento XML y es usado por Axd-framework para importar o exportar data
desde ó hacia Dynamics AX.
Todos los objetos mencionados excepto la tabla ó el query pueden ser generados automáticamente usando el asistente Axd.
En si lo que vamos hacder es crear una tabla MiTabla, insertamos algunos registros dentro de la tabla y generamos todos los objetos mencionados arriba usando el asistente Axd. Después, en la parte de ejecución, se exportará los registros de la tabla creada (MiTabla) dentro de un archivo XML e importaremos la data de un archivo XML dentro de la tabla creada (MiTabla).
1) Crear una nueva tabla (MiTabla)
Fig.1: Nueva tabla MiTabla
2) Usando el buscador de tablas, inserter 2 registros en la table MiTabla. Después estos registros serán exportados al archivo XML.
Fig. 2: Ruta de acceso al elemento de menú del navegador de la tabla
Fig. 3: Insertando 2 nuevos registros a la tabla creada
3) Creamos un nuevo query que sera usado para exportar la data de MiTabla al archivo XML e importar la data del archivo XML a la tabla MiTabla. El nombre del query debe empezar con Axd en orden de facilitar la distinción entre los queries estandars y los queries Axd.
Fig. 4: Nuevo query AxdMiTabla
4) Ir a herramientas – Herramientas de desarrollo - Asistente – y seleccionar Axd Asistente.
Fig. 5: Ruta de acceso al elemento de menú Asistente Axd.
5) El asistente de Axd empezará. En la página de bienvenida, hacer clic en el botón siguiente.
Fig. 6: Ventana de bienvenida del asistente Axd.
6) Seleccionar el query AxdMiTabla creado en el paso 3 y dar clic en el boton continuar.
Fig. 7: Ventana de selección del query
7) Seleccionamos todas las acciones para poder importar y exportar varios registros del documento.Especifique una descripción del documento en el campo de etiqueta y haga clic en el botón Siguiente.
Fig. 8: Selección de etiqueta y métodos
8) Clic en generar clases AxBC en la parte Generación AxBC.
Fig. 9: Ventana para generar los cúdigos Axd.
9) Después de haber realizado todos los pasos anteriores, darclic en Generar.
Fig. 10: Ventana de resumen de los objetos que se van a generar
Fig. 11: Ventana final del Asistente
10) Si nos fijamos en la ventana de salida del compilador, muy probablemente encontrará varios errores en
la clase AxMiTabla.
Fig. 12: Ventana del compilador después de que el asistente Axd se ha completado.
11) Para arreglar los errors que ha botado el compilador necesitamos ir al proyecto creado
AxdMiTabla, borrar los 2 metodos cacheObject y cacheRecordRecord de la clase AxdMitabla y
compilar el proyecto entero.
Fig. 13: Proyecto AxdMitabla generado por el asistente Axd.
Fig. 14: Borrando los métodos fallidos cacheObject y cacheRecordRecord.
Fig. 15: Compilando el proyecto entero
Ahora todos los objetos necesarios han sido creados por axd Asistente y estamos listos para exportar e importar los datos en formato XML.
Parte de ejecución:
1) Exportar data desde la table MiTabla al archive XML usando la clase AxdMiTabla
El job exporta los registros de la tabla MiTabla en XML archivo C: \ Temp \ AxdMiTabla_Salida.xml.
Por favor, asegúrese de que el directorio C: \ Temp existe antes de ejecutar este job.
static void exportarAxdMiTabla(Args _args)
{
MiTabla miTabla;
AxdMiTabla axdMiTabla = AxdBase::newClassId(classnum(AxdMiTabla));
AifEntityKeyList aifEntiryKeyList = new AifEntityKeyList();
AifDocumentXml aifDocumentXml;
XmlDocument xmlDocument;
// convertir un registro a la clave de entidad
AifEntityKey getEntityKey(Common _record)
{
AifEntityKey aifEntityKey = AifEntityKey::construct();
List keyFields = SysDictTable::getUniqueIndexFields(_record.TableId);
Map keyMap = SysDictTable::mapFieldIds2Values(keyFields,_record);
;
aifEntityKey.parmKeyDataMap(keyMap);
aifEntityKey.parmTableId(_record.TableId);
aifEntityKey.parmRecId(_record.RecId);
return aifEntityKey;
}
;
// añadir los registros destinados a la exportación en la entidad lista de claves
while select miTabla
{
aifEntiryKeyList.addEntityKey(getEntityKey(miTabla));
}
// creando el documento XML conteniendo los registros
aifDocumentXml = axdMiTabla.readList(aifEntiryKeyList, null, new AifEndpointActionPolicyInfo(),
new AifConstraintListCollection(), connull());
xmlDocument = XMLDocument::newXML(aifDocumentXML);
// guardando el documento XML en el disco
xmlDocument.save('C:\\Temp\\AxdMiTabla_salida.xml');
}
Y el resultado de correr este método sería:
2) Importar data de un archivo XML a la tabla MiTabla usando la lcase AxdMiTabla.
Para probar este metodo puedes usar el archivo XML generado AxdMitabla_Salida.xml y renombrarlo
como axdMitabla_Entrada.xml.
static void importarAxdMiTabla(Args _args)
{
AxdMiTabla axdMiTabla;
AifDocumentXml xml;
XmlDocument xmlDocument;
;
// crear un documento XML de un archivo
xmlDocument = XmlDocument::newFile("C:\\Temp\\axdMiTabla_Entrada.xml");
xml = xmlDocument.xml();
axdMiTabla = AxdBase::newClassId(classnum(AxdMiTabla));
// insertar datos desde el docuemnto XML dentro de Dynamics AX
axdMiTabla.createList(xml, new AifEndpointActionPolicyInfo(), new AifConstraintListCollection());
}
Saludos.
No hay comentarios:
Publicar un comentario