schedule - É possível executar duas funções consecutivamente no schedule
Perguntas » schedule » É possível executar duas funções consecutivamente no schedule
É possível executar duas funções consecutivamente no schedule
Preciso tirar uma duvida, aqui no forum, em relação como o schedule. Na empresa já tinha uma função que funciona certinho no schedule. Mas tivemos que fazer a chamada de outra função que se executa despois da primeira.
Assim eu estou executando as função U_ATUAPRECO() no schedulem que está no fonte ATUAPRECO.prw, mas no mesmo fonte antes do return eu faço a chamada da função U_EMAIL que está no fonte ENVIOEMAIL.prw.
E ai quando faço isso a primeira função que já estava funcionando certinha no schedule, é executada sem problema, só que a fazer a chamada da nova função entra em um ciclo e executa a primeira função varias vezes e não termina de executar a segunda função.
No schedule a função fica executando e não finaliza.
Minha duvida: é possível executar duas função desse forma? O que estou fazendo de errado?
Alguém consegue me orientar com isso, por favor.
Assim, na imagem Anexo01.jpg é o a função que vai ser chamada pelo schedule e eu circule em vermelho la chamada a outra função.
Essa outra função tem duas execuções principais a primeira vai gerar 3 relatórios, depois executa a segunda que vai criar e enviar um e-mail com os três relatórios adjuntos.
Mas o problema está em gerar os três relatórios, a função consegui gerar só um relatório e volta a executar a função principal e gerar de novo esse relatório. O e-mail não é enviado porque não são gerados os três.
No Anexo02.jpg está a função do Schedule.
As duas funções funcionam bem separadamente no schedule.
Também inverti a chamada, faço a execução da função que gera os relatórios chamando primeiro a função que vai atualizar os dados, e acontece a mesma coisa.
Por ultimo essa função que gerar os relatórios e envia os e-mail leva uns 8 minutos em executa-se completa, e ai eu estou pequice se o schedule tem algum limite de tempo de execução, mas não ache nada sobre isso.
Yenny, consegue colocar o exemplo do fonte e as funções, como elas estão sendo chamadas?
— Daniel Mendes 21 de Oct de 2020
Faço isso normalmente, deve ter algum problema no seu fonte.
— Marcos Bispo Abrahão 21 de Oct de 2020
Sim, Marcos com certeza tenho alguns problema no fonte. Mas eu não estou achando o que é. E o mais estranho é que conseguo executar essas duas funções por separado, mas quando executo elas duas consecutivamente não da certo.
— Yenny Delgado 21 de Oct de 2020
Daniel edite o post com algumas informações novas. Agradeço seu interesse em me ajudar.
Difícil dizer o que está acontecendo, tente colocar a chave KillStack no INI e quando a rotina ficar presa no schedule, derrubar a thread para que o error.log seja gerado no console: https://tdn.totvs.com/display/tec/%5BEnvironment%5D+KillStack
Daniel, muito obrigada. Consegui saber qual eram os erros configurando o KillStack.
— Yenny Delgado 22 de Oct de 2020
anexo02.jpg
Yenny, eu não usaria msgrun dentro da schedule nem o help, mude seu código e tente colocar dentro do if !IsBlind() lRet:= ajustaProdutos() apenas. E veja se na função UNIM018 não tem funções de tela também.
Marcos, obrigada pela sugestão. Já consegui resolver o problema. Não era exatamente o que você sugeriu, mas sim outra coisa parecida com esse. A rotina principal tinha várias variáveis sem declarar, ela es uma rotina antiga. O problema era que uma dessas variável tinha o mesmo nome de outra que era chamada em a rotina dos relatórios. Por isso o sistema fazia o ciclo, além disso tinha outra que ficava em branco e essa gerava outro erro com um alerta. Fiz a declaração de todas essas variáveis localmente e a rotinas estão funcionados corretamente.
— Marcos Bispo Abrahão 22 de Oct de 2020
Não é a resposta que estava procurando? Procure outras perguntas com as tags schedule ou faça a sua própria pergunta.