Buscar en este blog

miércoles, 17 de diciembre de 2014

Crear secuencia personalizada en Microsoft Dynamics Ax 2012 R2

Hola a todos, el siguiente post es para explicar cómo se crea una secuencia personalizada en Dynamics AX 2012 y que ésta se asigne a un campo de una de nuestras tablas.

Pasos
1. Crear EDT. Lo primero es decirle a Ax cuál tipo de dato va a estar definido por una secuencia. Por ejemplo, existe en Ax los PurchId que son los identificadores de ordenes de compra y que estos pueden ocuparse en una secuencia, un tipo así necesitamos pero creado por nosotros.
En este caso, voy a crear un campo que se va a llamar PlanProduccionId.


2. Después necesitamos identificar el módulo al que va a pertenecer nuestra secuencia, en este caso, el módulo donde quiero esta secuencia es en Planeación Maestra, así que en la clase de NumberSequenceModuleMasterPlanning, en el método loadmodule() hasta abajo, insertamos las líneas que van a identificar nuestra secuencia:

     datatype.parmDatatypeId(extendedTypeNum(GRWPlanProduccionId));
     datatype.parmReferenceLabel(literalStr("Clave única del Id de Plan"));
     datatype.parmReferenceHelp(literalStr("Número para los planes de producción."));
     datatype.parmWizardIsManual(NoYes::No);
     datatype.parmWizardIsChangeDownAllowed(NoYes::No);
     datatype.parmWizardIsChangeUpAllowed(NoYes::No);
     datatype.parmWizardHighest(999999);
     datatype.parmSortField(20);
     datatype.addParameterType(NumberSeqParameterType::DataArea, truefalse);
     this.create(datatype);

3. Escribimos un nuevo método en la tabla de los parámetros de la planeación maestra que es ReqParameters, de dónde sacamos el nombre de esta tabla? pues vamos al módulo de planeación maestra > Configuración > Parámetros de la planeación, en cualquier módulo va a existir una opción similar.

client server static NumberSequenceReference numRefPlanProduccionId()
{
     return NumberSeqReference::findReference(extendedTypeNum(GRWPlanProduccionId));
}

4. Escribimos el siguiente job y lo corremos, esto va a mandar a llamar nuestro loadmodule que modificamos en el paso 2

static void Carid(Args _args)
{
    NumberSeqMasterPlanning numberSeqModuleMasterPlanning = new NumberSeqMasterPlanning();
    ;
    numberSeqModuleMasterPlanning.load();
}

Con esto ya podemos ver en los parámetros de la planeación maestra nuestra secuencia incluida con el parmReferenceHelp que le asignamos en el paso 2.


5. Después vamos a correr el wizard desde la ruta: Administración de la organización > Comun > NumberSequence >
  

Se corre el asistente, ahi no hay ciencia, es siguiente - siguiente - siguiente.

6. Ahora tenemos que verificar que esta correctamente creada y funciona bien, para eso usamos el siguiente job, para que nos genere una secuencia y podamos
static void number(Args _args)
{
    NumberSeq  numberSeq;
    CarId num;
    ;
    numberSeq = NumberSeq::newGetNum(ProjParameters::numRefcarId());
    num = numberSeq.num();
    info(num);
}










Listo!!!!

Con esto ya tenemos generada nuestra secuencia, ahora, como generalmente estas secuencias no se usan solo desde código sino generalmente desde una pantalla de usuario, vamos a integrarlo a un form nuevo.... pero eso será en el siguiente post.



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


No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma. 





1 comentario:

  1. De casualidad tienes el siguiente post donde se integra la secuencia a un form

    ResponderBorrar