jueves, mayo 29, 2014

Libro Software Development

El Desarrollo de Software es una actividad compleja, el Desarrollador debe tener ciertas destrezas que deben ser pulidos y mejorados, de esta manera lograremos un avance significativo en nuestra profesión, este libro nos permite conocer aquellos aspectos del Desarrollo de Software que son desconocidos por muchos de nosotros, recomiendo leerlo, una vez adquirido el conocimiento aplicarlo.

Preview


lunes, mayo 12, 2014

AX2009: Importar Proyectos AX 2012 a AX 2009

En ciertos momentos se requiere reutilizar componentes desarrollados en Axapta 2012 a versiones inferiores de AX, como por ejemplo AX 2009. La tarea no termina en importar el archivo XPO a la versión AX 2009 directamente; debido a ciertos requerimientos del nuevo formato xpo de AX 2012 tendremos el siguiente mensaje de error:


Para solucionar este inconveniente se requiere realizar la siguiente modificación en cada uno de los componentes de software que se encuentran en el Proyecto (Archivo XPO).

Abrir el archivo XPO con un editor de texto (NotePad esta bien) y realizar la modificación siguiente:

- Borramos la línea Origin.
- Añadimos la línea Versión: 3



Posterior a esto, volvemos a importar y podemos verificar que ya no tenemos el error presentado al inicio.

martes, marzo 18, 2014

AX 2012: Utilizando clase estándar UserConnection

Algunas veces es necesario establecer un nuevo contexto en la transacción de la base de datos independiente al que se está utilizando dentro de Axapta. 

Dependiendo de las necesidades o problemas a resolver, en mi caso, necesito establecer un Log de errores de la información procesada, como buenas prácticas es recomendable establecer un ámbito de transacción cuando trabajos con datos de la base de datos.  ¿Que quiere decir esto? simplemente asegurar la consistencia de la información cuando manipulamos los datos para ingreso, eliminación y actualización de la información, para que cuando existe algún error dentro de nuestro ámbito de la transacción el motor de base de datos pueda realizar el rollback y de esta forma la consistencia de la información es manejada adecuadamente.

¿Que sucede cuando dentro de nuestro ámbito de la transacción tenemos el proceso para registrar el log de errores de nuestras transacciones?

Obviamente, cuando exista un rollback, toda la información ingresada, actualizada o eliminada también es desecha. 

Aquí es donde la clase UserConnection ayuda. Esta clase va permitir establecer un nuevo ámbito de transacción de base de datos, independiente al que maneja el Axapta, permitiendo mantener la información de la tabla con la información que se desea, sin importar si existe un rollback

La forma de utilizar la clase UserConnection para ingresar y actualizar información difiere.

- Para ingresar información:

  UserConnection   userConnection;
  TestTable testTable; //buffer Tabla

  ;
  ttsbegin;

  //instancia de la clase
  userConnection = new UserConnection();

  testTable.NoYesError = NoYesError::Error;
  testTable.LogText = strFmt("Error de parametrización");
  testTable.setConnection(userConnection); //establecer el nuevo ámbito de conexión base datos
  testTable.insert();

  ttscommit;

- Para actualizar información:

 UserConnection   userConnection;
  TestTable testTable; //buffer Tabla

  ;

  //instancia de la clase
  userConnection = new UserConnection();

  userConnection.ttsbegin(); //comienzo transacción

  testTable.setConnection(userConnection); //establecer el nuevo ámbito de conexión base datos

  select forUpdate testTable; //consulta del registro a actualizar
                       
  testTable.NoYesError = NoYesError::Error;
  testTable.LogText = strFmt("Error de parametrización");

  testTable.update();

  userConnection.ttscommit(); //transacción finaliza ok