Como ejecutar varios procesos encadenados con el Sheduler

SOLVED

Hola,

En el Sage200Adv, necesito ejecutar 3 procesos encadenados con el Sheduler, de manera que el Proceso 1, se ejecute en un día y hora específica.

Después el Proceso 2 se tiene que ejecutar cuando haya acabado el Proceso 1.

Después el Proceso 3 se tiene que ejecutar cuando haya acabado el Proceso 2.

Es posible? Si es así como se configura?

Muchas gracias.

  • 0
    SUGGESTED

    Buenas

    A través del agente de Sql Server puedes hacer algo de eso, encadenando trabajos:

    Otra forma podría ser, dentro del S200c, un cálculo que ejecute los tres cálculos en orden secuencial; puedes usar la instrucción Calculo() o bien el EjecutaOperacion():

  • 0 in reply to FaustinoMarin

    Hola,

    El problema es que he actualizado el Sage a la última versión 2024.45.000, y ahora no hay opción de crear un proceso en diferido a través del SQL.

    Por ejemplo, cuando programas la creación de un inventario, para que se ejecute en diferido, antes de esta versión te aparecía como Destino "Enviar al servidor de SQL" 

    Y luego yo ya configuraba, en el SQL, el orden de cada uno de los trabajos que había configurado.

    Ahora es esta versión solamente hay la opción como Destino "Enviar a Sage Sheduler"

    Lo que comentas de hacerlo por calculo, no se que función he de utilizar para lanzar cada uno de los trabajos en su orden correcto.

    Necesito ejecutar los trabajos que te muestro a continuación (en amarillo) y en el orden en que están:

    Alguna idea?

    Muchas gracias y saludos.

  • 0 in reply to Jordi A.
    SUGGESTED

    Si entras en los trabajos programados del Sql Server (con la imagen que te puse antes), al editarlo verás que todos lanzan una instrucción del tipo

    "C:\Program Files (x86)\Sage\Sage 200c\LogicQb.exe" 96004|609302|1|XXXXXXX||-1 

    donde 

    96004 es el nº de trabajo del sql server

    609302 no sé qué es (por supuesto no hay ayuda de la aplicación LOGICQB)

    1 es el código de la empresa que lanza el trabajo

    XXXXXXX es el nombre del usuario que lanza el trabajo

    Podrías ver las llamadas que hacen los otros trabajos, e insertar nuevas líneas en el trabajo "padre":

    del estilo

    paso 1: "C:\Program Files (x86)\Sage\Sage 200c\LogicQb.exe" 96004|609302|1|XXXXXXX||-1 

    paso 2: "C:\Program Files (x86)\Sage\Sage 200c\LogicQb.exe" 99001|nnnnnn|1|XXXXXXX||-1 

    paso 3: "C:\Program Files (x86)\Sage\Sage 200c\LogicQb.exe" 99002|mmmm|1|XXXXXXX||-1 

    Aunque si sabes programación en S200c, es más fácil hacerlo desde un cálculo.

  • 0 in reply to FaustinoMarin

    Buenos días,

    Cómo bien dices, me gustaría hacerlo por cálculo en el Sage200, pero el problema es que no se que instrucción he de utilizar para llamar a los diferentes procesos / trabajos que tengo programados.

    Te muestro los procesos que tengo programados en el Sage Scheduler, y que son los que quiero ejecutar en el mismo orden en que se encuentran.

    Alguna idea?

    Gracias.

  • 0 in reply to Jordi A.

    Buenas

    Las dos operaciones que pones son dos asistentes (acumulación/desacumulación y creación de inventarios) del módulo de almacenes.

    Te he estado mirando funciones estándar que realicen esas funciones y no hay ninguna función Procesa que haga eso mismo (o por lo menos que yo conozca). Mira el archivo LcScript.chm para ver todas las funciones.

    Eso implica que deberás crearte un cálculo que haga la acumulación de stocks con los datos que necesites, y otro para la creación del inventario.

    Para eso hace falta conocimientos técnicos de S200c y de la estructura de las tablas. Si no tienes suficiente conocimientos, deberás ponerte en contacto con tu partner. No es un cálculo muy complicado pero si un poco largo de programar (entran en juego tablas como MovimientoStock, AcumuladosStock e Inventarios, quizás más según los parámetros que necesites controlar).

  • +1 in reply to FaustinoMarin
    verified answer

    Buenas tardes,

    Ya he encontrado el modo de hacerlo. Lo comparto por aquí, por si le sirve a alguien más.

    Primero he creado en el Sage los diferentes procesos en diferido de lo que necesito hacer. El truco para que no lo ejecute el Sage Scheduler, es ponerle a la fecha de inicio una fecha muy alta, por ejemplo 01/04/2079.

    Una vez creado los diferentes procesos, editaremos el primer proceso en Sage Scheduler y copiaremos los parámetros de este proceso:

      

    Ahora entraremos en el Microsoft SQL Server Management Studio y crearemos un nuevo trabajo con los diferentes pasos que queramos ejecutar y que serán los que hemos creado en Sage Scheduler. En el paso correspondiente pegaremos los parámetros que hemos copiado anteriormente:

    Es muy importante indicar que en caso de éxito "Ir al siguiente paso". Así en todos los pasos excepto en el último paso, en que pondremos "Salir del trabajo e informar del éxito".

    Repetiremos la misma operación en cada uno de los siguientes procesos que se han creado en el Sage Scheduler.

    Finalmente en el nuevo trabajo que hemos creado en el Microsoft SQL Server Management Studio, le pondremos la fecha y hora y/o periodicidad en la que queramos que se ejecute.

    Y con esto lo he conseguido.

    Gracias por todo.

  • 0 in reply to Jordi A.
    SUGGESTED

     creo que esa es la misma que te puse con los pasos de Sql Server.

  • 0 in reply to FaustinoMarin

    Podría ser. Pero no te entendí. El problema que me encontraba, era que no sabía que parámetros tenía que poner, para que llamase a cada paso que figura en el Sage Scheduler.

    Esto lo encontré editando los diferentes pasos en el Sage Scheduler:

    Era lo que me faltaba saber.

    De todos modos, gracias por tu ayuda.

    Saludos