Histórico da Página
SCHEDDEF()
No novo Schedule existe uma forma para a definição dos Perguntes para o botão Parâmetros, além do cadastro das funções no SXD.
...
aReturn[5] - Título (para Relatório)
aReturn[6] - Nome do relatório (parâmetro 1 do método new da classe TReport)
- Utilizado a partir da lib 20241007
Observações:
- Válido para Function e User Function, lembrando que uma vez definido a SchedDef, ao chamar a rotina o ambiente já está inicializado.
- Uma vez definido a Static Function SchedDef(), a rotina deixa de ser uma execução como processo especial, ou seja, não se deve cadastrá-la no Agendamento passando parâmetros de linha. Ex: Funcao("A","B") ou U_Funcao("A","B").
- O nome da função principal deve ter o mesmo nome do fonte. No exemplo abaixo, o nome do fonte seria TSTSCHD.prw.
- Para maiores informações sobre o novo Schedule, acesse o Help do Protheus.
- A partir da lib 20241007 será possivel selecionar o layout do relatório TReport no agendamento.
- Necessário ser passado o parâmetro 6 no retorno da função scheddef.
- Esse parametro deve ter o nome do relatório (parâmetro 1 do método new da classe TReport)
- Caso não seja passado será feita uma tentativa de encontrar layout pelo nome da função do agendamento
- Por questão de segurança, apenas layouts sem usuário e senha definida serão considerados no agendamento.
- Caso o layout tenha sofrido alguma alteração nesse sentido (senha ou usuário) entre a inclusão do agendamento e a execução, será utilizado o layout padrão.
Exemplo de definição da SchedDef:
User function TSTSCHD()
conout("Executando Tarefa " + FWGetIdTask() )
Pergunte("ACA070", .F.)
If IsBlind()
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
//------------------------------------------------------------------- /*/{Protheus.doc} TSTSCHD Função TSTSCHD @author Totvs @since 12/08/2024 //-----------------------------------------------------------------*/ User function TSTSCHD() If IsBlind() BatchProcess("Teste","Teste",,{ || TSTExec() }) |
...
EndIf
Return
Static Function TSTExec()
EndIf Return //------------------------------------------------------------------- /*/{Protheus.doc} TSTExec Função TSTExec @author Caio Lima @since 12/08/2024 //-----------------------------------------------------------------*/ Static Function TSTExec() conout("MV_PAR01 " + |
...
MV_PAR01) |
...
conout("MV_PAR02 " + |
...
MV_PAR02) |
...
conout("MV_PAR03 " + |
...
MV_PAR03) |
...
Return
Static Function Scheddef()
Local aParam
...
Return //------------------------------------------------------------------- /*/{Protheus.doc} Scheddef Função para definição de parametros na tela de schedule @author Totvs @since 12/08/2024 //-----------------------------------------------------------------*/ Static Function Scheddef() Local aParam as array Local aOrd as array aParam := {} aOrd := {OemToAnsi(" Por Codigo "),OemToAnsi(" |
...
Alfabetica ")} |
...
aParam := { "P",; //Tipo R para relatorio P para processo
"ACA070",;// Pergunte do relatorio, caso nao use passar ParamDef
"SA1",; // Alias
aOrd,; //Array de ordens
"Teste SchedDef"}
Return aParam
FWGetIdTask()
Função que retorna o Id da tarefa(Agendamento + Código) que está sendo executada pelo novo Schedule. Esta função pode ser chamada somente se a Static Function SchedDef() estiver definida no fonte.
Para rotinas especiais(que não possuem Static Function SchedDef ), onde os parâmetros são passados via linha, o Id da tarefa será passado na ultima posição do array recebido como parâmetro.
Exemplo:
Ao cadastrar o agendamento do Schedule da User Function abaixo, informado no campo Rotina a seguinte informação: U_TSTSCHD1("A","B").
Quando o novo Schedule executar esta rotina, a mesma irá receber um array com os parâmetros passados no agendamento + Código Grupo Empresa + Código Filial + Código Usuário + Id da tarefa.
User function TSTSCHD1(aParam) conout("Parametro 1: " + aParam[1]) conout("Parametro 2: " + aParam[2]) conout("Grupo Empresa: " + aParam[3]) conout("Filial: " + aParam[4]) conout("User: " + aParam[5]) conout("Id Tarefa: " + aParam[6]) Return
Resultado:
|
|---|
...
Aadd(aParam, "R" ) // 01 - Tipo R para relatorio P para processo
Aadd(aParam, "ACA070" ) // 02 - Pergunte do relatorio, caso nao use passar ParamDef
Aadd(aParam, "SA1" ) // 03 - Alias
Aadd(aParam, aOrd ) // 04 - Array de ordens
Aadd(aParam, "Titulo teste" ) // 05 - Titulo
Aadd(aParam, "report01" ) // 06 - Nome do relatório (parametro 1 do metodo new da classe TReport)
Return aParam |