Problemas al sincronizar tasas de cambio en tareas por lotes con proveedores de tasas de cambio desarrollados

Hilo iniciado por Eduardo Rotundo Soto el 28 de septiembre de 2017

Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Autor
    Entradas
  • #14573
    RangoEduardo Rotundo SotoEduardo Rotundo Soto
    Participante
    PARTICIPANTE
    1.252 Rincoins

    Hola a todos!

     

    Hoy vengo por acá con un problema, que es bastante puntual y no se si ha sucedido con anterioridad en está comunidad.

     

    Tras seguir el documento de Microsoft para crear proveedores de tasas de cambio con X++, logré que el mismo apareciera en la herramienta sin problemas y al realizar la consulta para actualizar las tasas de cambio en cuestión funciona sin problemas, pero al momento de pasar esa actividad a una tarea ejecutada en lotes la misma falla y no funciona y me devuelve el siguiente error

     

    Microsoft.Dynamics.Ax.Xpp.ErrorException: Se produjo una excepción de tipo ‘Microsoft.Dynamics.Ax.Xpp.ErrorException’.
    en Dynamics.Ax.Application.ExchangeRateImportOperation.Import(ExchangeRateImportRequest exchangeRateImportRequest) en ExchangeRateImportOperation.import.xpp:línea 31
    en ExchangeRateImportOperation::import(Object , Object[] )
    en Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeInstanceCall(Object instance, String MethodName, Object[] parameters)
    en Dynamics.Ax.Application.SysOperationServiceController.Runoperation(Boolean _async) en SysOperationServiceController.runOperation.xpp:línea 88
    en Dynamics.Ax.Application.SysOperationServiceController.Run() en SysOperationServiceController.run.xpp:línea 27
    en Dynamics.Ax.Application.BatchRun.runJobStaticCode(Int64 batchId) en BatchRun.runJobStaticCode.xpp:línea 54
    en Dynamics.Ax.Application.BatchRun.runJobStatic(Int64 batchId) en BatchRun.runJobStatic.xpp:línea 13
    en BatchRun::runJobStatic(Object[] )
    en Microsoft.Dynamics.Ax.Xpp.ReflectionCallHelper.MakeStaticCall(Type type, String MethodName, Object[] parameters)
    en BatchIL.taskThreadEntry(Object threadArg)

     

    Para lo cual no tengo idea de que pueda ser o por donde visualizar el problema (acotando que soy nuevo en Dynamics)

     

    La versión que tengo actualmente es AX 2012 R3 CU8

    #14574
    RangoJonathan BravettiJonathan Bravetti
    Participante
    PARTICIPANTE
    7.266 Rincoins

    Hola Eduardo, segun entiendo creaste un proceso mediante el cual creas proveedores de tasa de cambio, al ejecutar tu proceso de forma manual funciona de forma perfecto pero cuando lo ejecutas por lotes falla. 

    Si la interpretacion es correcta tene en cuentalo siguiente.

    Estimo que creaste una clase nueva donde tienes tu codigo, si lo vas a ejecutar por lotes debes tener encuenta algunas cuestiones.

    La clase deberia tener un extends RunBaseBatch, por ejemplo:

    Class claseEjemplo extends RunBaseBatch

    {

    }

    Si es una tarea programada normalmente se ejecuta a nivel de AOS por lo que tu clase, en las propiedades seria conveniente que tenga el valor Server en la propiedad RunOn

    Espero que te resulte de utilidad.

    #14575
    RangoEduardo Rotundo SotoEduardo Rotundo Soto
    Participante
    PARTICIPANTE
    1.252 Rincoins

    Hola Jonathan.

     

    Lo que hice fue crear un proveedor de tasa de cambio, te coloco el código para que veas como hice la declaración de la clase, la misma hereda de ExchangeRateProvider para que AX 2012 lo pueda reconocer como un proveedor válido de tasas de cambio en la sección de Contabilidad General.

     

    Este es el manual que segui para realizar el desarrollo del proveedor

    https://www.microsoft.com/en-us/download/details.aspx?id=36047

     

    El detalle rádica que cuando corro manualmente la importación de tasas de cambio con el proveedor creado, la misma funciona sin problema, pero si me voy a pestaña Lote y la configuro para que corra como una tarea por Lotes entonces ahí es donde da el error al intentar ejecutar la tarea en el tiempo y fecha programado. Este comportamiento que menciono no me pasa con el proveedor de tasas de cambio que viene por defecto en AX 2012 del banco de Rusia, tiene la programación similar y cuando lo ejecuto por lotes funciona sin problemas.

     

    Saludos

     

    ER

    #14576
    RangoJonathan BravettiJonathan Bravetti
    Participante
    PARTICIPANTE
    7.266 Rincoins

    Exacto, es lo mismo que te comento. Bien te recomiendo que hagas lo siguiente, como tu clase ya tiene un Extends y para facilitar las cosas, no tocar tu logica la cual desconozco, lo mas sencillo que veo es crear una nueva clase que se encargue del proceso batch.

    Es decir creas una clase que tenga un extends de RunBaseBatch y luego desde aqui llamas a tu otra clase con tu logica que crea los proveedores de tasa de cambio la cual funciona de forma correcta.

    Aqui te dejo un manual de Microsoft para que tengas en cuenta los puntos necesarios para la clase que va a correr por batch. https://msdn.microsoft.com/en-us/library/cc636647.aspx

Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Debes estar registrado para responder a este debate.
Carrito de compra