|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Rotina automática FCI |
|
Versão: |
12.1.2210 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
FCI.prw (anexo) | |
|
|
|
Mensagem do
PAULO0210
em 05/02/2024, 17:20 h
Local: MG Registro: 18/09/2023 Postagens: 37 |
Boa tarde galera,
Tô tentando automatizar a rotina FISA061 via execauto e preciso que essa rotina rode todos os dias em um determinado horário.
Vi que existe uma função SchedDef() que faz esse agendamento, mas ainda não usei e gostaria que me dessem uma força.
Fonte está em anexo. |
|
|
Mensagem do
ROBERTOMEN
em 06/02/2024, 09:52 h
Local: PR Registro: 04/07/2017 Postagens: 547 |
bom dia
A função SCHEDDEF é utilizada para passar parâmetros da sua rotina para o Schedulle, semelhante aqueles que são cadastrados na SX1, MV_PAR01,MV_PAR02....
No caso da FISA061 os parâmetros devem ser passados na chamada da propria função
No exemplo abaixo eu crio a user Function fExecf061 que chama a FISA061.
A fExecf061 deve ser cadastrada via configurador no schedulle com os dias e horas que você pretende executá-la.
Exemplo:
***********************
user function fExecf061()
***********************
Local aWizJob :={}
aWizJob[01] := dDataBase // Data de, neste exemplo vai ser a data da execução
aWizJob[02] := dDataBase // Data até,neste exemplo vai ser a data da execução
aWizJob[03] := ‘‘ // Produto de, neste exemplo para todos os produtos
aWizJob[04] := ‘ZZZZZ‘ // produto até, neste exemplo para todos os produtos
aWizJob[05] := 2 // Seleciona Filiais (não)
aWizJob[06] := ‘‘ // Versão (informar aqui a Versão)
aWizJob[07] := 1=Sim ou 2=Nao // Cons Produtos Bloqueados, vc decide
aWizJob[08] := 1 ou 2 // Usar Cod FCI Anterior, vc decide
//Function FISA061( aWizJob , aFilJob , cDirJob , cArqJob , nTipo )
FISA061( aWizJob) // Aqui vc chama a fisa061 passando os parâmetros
return()
|
|
|
Mensagem do
PAULO0210
em 07/02/2024, 09:43 h
Local: MG Registro: 18/09/2023 Postagens: 37 |
Bom dia Roberto, adequei o fonte conforme regra repassada pela contabilidade, mas quando passo a função fExecf061 no schedule, ela fica aguardando execução.
Segue abaixo o fonte.
#Include "PROTHEUS.CH"
User Function FCI()
Local lMostraTela := .F.
Local aWizAuto := {} // Array com conteúdo dos campos preenchidos na wizard
Local aFilAuto := {} // Array com as filiais que serão processadas
Local cDir := "\FCI\" // Diretório não pode ser o mesmo informado StartPath
Local cArq := "FCI.TXT"
Local nTipo := 1 // 1-Processar; 2-Importar; 3-Gerar arquivo
Local dDataAtual := Date()
Local dMes := Month(dDataAtual)
Local dAno := Year(dDataAtual)
Local dMesAnt := ""
Local dAnoAnt := ""
Local dMesAnoAnt := ""
Local dPrimeiroDia := ""
Local dUltimoDia := ""
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private lAutoErrNoFile := .F.
IF dMes == 1
dMesAnt := 12
ELSE
dMesAnt := dMes - 1
ENDIF
IF dMes == 1
dAnoAnt := dAno - 1
ELSE
dAnoAnt := dAno
ENDIF
dMesAnoAnt := CTOD(Substr(DTOC(dDataAtual),1,2) + "/" + Alltrim(Str(dMesAnt)) + "/" + Alltrim(Str(dAnoAnt)))
dPrimeiroDia := FirstDate(dMesAnoAnt)
dUltimoDia := LastDate(dMesAnoAnt)
// IF SELECT("SX2") == 0
// cCodEmp := aParams[1]
// cCodFil := aParams[2]
// RPCSetEnv(cCodEmp, cCodFil)
// ENDIF
// aFilAuto := MatFilCalc(.F.)
RPCSetEnv(cCodEmp, cCodFil)
Aadd(aWizAuto,{ DTOS(dPrimeiroDia), ;// Data de
DTOS(dUltimoDia), ; // Data ate
"", ; // Produto de
"ZZZZZZZZZZZZZZZ", ; // Produto ate
"2" , ; // Seleciona filiais? 1-Sim|2-Não
"1.0" , ; // Versão
"2" , ; // Considera produtos bloqueados ? 1-Sim|2-Não
"1"}) // Usar cod.FCI anterior para mesma faixa? 1-Sim|2-Não
MSExecAuto({|x,y,z,m,n|FISA061(x,y,z,m,n)}, aWizAuto, aFilAuto, cDir, cArq, nTipo)
If lMsErroAuto
MostraErro()
EndIf
Return Nil
user function fExecf061()
Local aWizJob :={}
aWizJob[01] := DTOS(dPrimeiroDia) // Data de, neste exemplo vai ser a data da execução
aWizJob[02] := DTOS(dUltimoDia) // Data até,neste exemplo vai ser a data da execução
aWizJob[03] := "" // Produto de, neste exemplo para todos os produtos
aWizJob[04] := "ZZZZZZZZZZZZZZZ" // produto até, neste exemplo para todos os produtos
aWizJob[05] := "2" // Seleciona Filiais (não)
aWizJob[06] := "1.0" // Versão (informar aqui a Versão)
aWizJob[07] := "2" // Cons Produtos Bloqueados, vc decide
aWizJob[08] := "1" // Usar Cod FCI Anterior, vc decide
//Function FISA061( aWizJob , aFilJob , cDirJob , cArqJob , nTipo )
FISA061(aWizJob) // Aqui vc chama a FISA061 passando os parâmetros
return()
|
|
|
Mensagem do
PAULO0210
em 07/02/2024, 10:07 h
Local: MG Registro: 18/09/2023 Postagens: 37 |
Quando eu chamo a função fExecf061 no schedule, ela executa e finaliza muito rápido, sendo que ela costuma demorar de 4 a 5 horas para executar... |
|
|
Mensagem do
PAULO0210
em 19/02/2024, 08:24 h
Local: MG Registro: 18/09/2023 Postagens: 37 |
Sabe me dizer o que pode ser? |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|