Como desenvolver a "User Function" para execução automática de dados na rotina Geração Check List.
Produto: | Manutenção de Ativos e Gestão de Frotas (SIGAMNT). |
Versões: | Todas |
Ocorrência: | Desenvolvimento de função para execução automática(ExecAuto) e inclusão de registros na rotina de Geração Check List. |
Ambiente: | Todos |
Passo a passo: | Para desenvolvimento da rotina de execução automática, para inclusão de dados na rotina de Geração Check List, favor utilizar o exemplo abaixo. |
Exemplo fonte ExecAuto
#INCLUDE "PROTHEUS.CH" //-------------------------------------------------- // FUNÇÃO RESPONSÁVEL PELA CRIAÇÃO DO EXECAUTO // DA ROTINA MNTA735 //-------------------------------------------------- User Function MNT735Exec() Local aSay := {} Local aButton := {} Local nOpc := 0 Local Titulo := 'IMPORTAÇÃO DE CHECK LIST' Local cDesc1 := 'Esta rotina fará a importação de Check List' Local cDesc2 := 'conforme layout. ' Local cDesc3 := '' Local lOk := .T. Private lJob := Type( "oMainWnd" ) != "O" If !lJob aAdd( aSay, cDesc1 ) aAdd( aSay, cDesc2 ) aAdd( aSay, cDesc3 ) aAdd( aButton, { 1, .T., { || nOpc := 1, FechaBatch() } } ) aAdd( aButton, { 2, .T., { || FechaBatch() } } ) FormBatch( Titulo, aSay, aButton ) Else nOpc := 1 //quando a chamada for via Job recebe automaticamente OK para execução do processo RpcSetType(3) RpcSetEnv("99", "01 " ) EndIf If nOpc == 1 If !lJob Processa( { || lOk := Runproc() },'Aguarde','Processando...',.F.) If lOk ApMsgInfo( 'Processamento terminado com sucesso.', 'ATENÇÃO' ) Else ApMsgStop( 'Processamento realizado com problemas.', 'ATENÇÃO' ) EndIf Else lOk := Runproc() EndIf EndIf Return Nil //------------------------------------------------------------------- // Rotina para importação de Check List. //------------------------------------------------------------------- Static Function Runproc() Local lRet := .T. Local aCposCab := {} Local aCposDet := {} //Dados da tabela. aCposCab := {} aAdd( aCposCab, { 'TTF_FILIAL' , xFilial("TTF") } ) aAdd( aCposCab, { 'TTF_CODBEM' , 'ALKM009 ' } ) aAdd( aCposCab, { 'TTF_CODFAM' , 'FM0003' } ) aAdd( aCposCab, { 'TTF_TIPMOD' , 'M00002 ' } ) aAdd( aCposCab, { 'TTF_CODFUN' , '000001' } ) aAdd( aCposCab, { 'TTF_DATA' , dDataBase } ) aAdd( aCposCab, { 'TTF_HORA' , '12:00' } ) aAdd( aCposCab, { 'TTF_SEQFAM' , '001' } ) //Valores da TTG aCposDet := {} aAdd( aCposDet, { { 'TTG_FILIAL', xFilial("TTG") },; { 'TTG_ETAPA' , '000001' },; { 'TTG_EVENTO', 'O' },; { 'TTG_SERVIC', 'CORELE' },; { 'TTG_CRITIC', 'A' } } ) aAdd( aCposDet, { { 'TTG_FILIAL', xFilial("TTG") },; { 'TTG_ETAPA' , '000002' },; { 'TTG_EVENTO', 'O' },; { 'TTG_SERVIC', 'CORELE' },; { 'TTG_CRITIC', 'M' } } ) If !Import( 'TTF', 'TTG', aCposCab, aCposDet ) lRet := .F. EndIf Return lRet //------------------------------------------------------------------- // Importacao dos dados //------------------------------------------------------------------- Static Function Import( cMaster, cDetail, aCpoMaster, aCpoDetail ) Local oModel Local lRet := .T. Local nI := 0 Local nJ := 0 Local nK := 0 Local nItErro := 0 dbSelectArea( cDetail ) dbSetOrder( 1 ) dbSelectArea( cMaster ) dbSetOrder( 1 ) //Abre o Model da rotina. oModel := FWLoadModel( 'MNTA735' ) // Define a operação desejavada: 3 – Inclusão / 4 – Alteração / 5 - Exclusão oModel:SetOperation( 3 ) // Ativação do Modelo. oModel:Activate() //Joga os valores da TTF para o modelo - TTFMASTER. If Len(aCpoMaster) > 0 For nI := 1 To Len(aCpoMaster) oModel:LoadValue("TTFMASTER",aCpoMaster[nI,1],aCpoMaster[nI,2]) Next nI EndIf //Joga o valores da TTG para a Grid - TTGDETAIL. If Len(aCpoDetail) > 0 For nJ := 1 To Len(aCpoDetail) If nJ > 1 oModel:GetModel('TTGDETAIL'):AddLine() EndIf For nK := 1 to Len(aCpoDetail[nJ]) ConOut(aCpoDetail[nJ][nK][1]) oModel:LoadValue("TTGDETAIL",aCpoDetail[nJ][nK][1],aCpoDetail[nJ][nK][2]) Next nK Next nJ EndIf If ( lRet := oModel:VldData() ) //Valida os dados informados. // Se os dados foram validados faz-se a gravação efetiva dos // dados (commit) oModel:CommitData() EndIf If !lRet // Se os dados não foram validados obtemos a descrição do erro para gerar // LOG ou mensagem de aviso aErro := oModel:GetErrorMessage() // A estrutura do vetor com erro é: // [1] identificador (ID) do formulário de origem // [2] identificador (ID) do campo de origem // [3] identificador (ID) do formulário de erro // [4] identificador (ID) do campo de erro // [5] identificador (ID) do erro // [6] mensagem do erro // [7] mensagem da solução // [8] Valor atribuído // [9] Valor anterior AutoGrLog( "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' ) AutoGrLog( "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' ) AutoGrLog( "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' ) AutoGrLog( "Id do campo de erro: " + ' [' + AllToChar( aErro[4] ) + ']' ) AutoGrLog( "Id do erro: " + ' [' + AllToChar( aErro[5] ) + ']' ) AutoGrLog( "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' ) AutoGrLog( "Mensagem da solução: " + ' [' + AllToChar( aErro[7] ) + ']' ) AutoGrLog( "Valor atribuído: " + ' [' + AllToChar( aErro[8] ) + ']' ) AutoGrLog( "Valor anterior: " + ' [' + AllToChar( aErro[9] ) + ']' ) If nItErro > 0 AutoGrLog( "Erro no Item: " + ' [' + AllTrim( AllToChar( nItErro ) ) + ']' ) EndIf If !lJob MostraErro() EndIf EndIf // Desativamos o Model oModel:DeActivate() Return lRet
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas