Olá pessoal…
Hoje vou mostrar uma função que desenvolvi que serve para criar parâmetros específicos via código fonte em AdvPL.
A função recebe um array, com 4 posições, a primeira é o código do parâmetro, a segunda é o tipo, a terceira é a descrição e a última posição é o conteúdo. Abaixo um exemplo de como executar.
Local aPars := {} aAdd(aPars, {"MV_X_EMAIL", "C", "e-Mail da empresa", "email@teste.com"} ) aAdd(aPars, {"MV_X_HPAGE", "C", "Site da empresa", "www.teste.com"} ) aAdd(aPars, {"MV_X_USERS", "C", "Usuários administradores", "000000;"} ) u_zCriaPar(aPars)
A utilidade é quando você deseja replicar vários parâmetros em várias bases, assim preparando um único fonte, e depois executando no fórmulas das bases.
Abaixo o código fonte completo.
//Bibliotecas #Include "Protheus.ch" /*/{Protheus.doc} zCriaPar Função para criação de parâmetros (SX6) @type function @author Atilio @since 12/11/2015 @version 1.0 @param aPars, Array, Array com os parâmetros do sistema @example u_zCriaPar(aParametros) @see https://terminaldeinformacao.com @obs Abaixo a estrutura do array: [01] - Parâmetro (ex.: "MV_X_TST") [02] - Tipo (ex.: "C") [03] - Descrição (ex.: "Parâmetro Teste") [04] - Conteúdo (ex.: "123;456;789") /*/ User Function zCriaPar(aPars) Local nAtual := 0 Local aArea := GetArea() Local aAreaX6 := SX6->(GetArea()) Default aPars := {} DbSelectArea("SX6") SX6->(DbGoTop()) //Percorrendo os parâmetros e gerando os registros For nAtual := 1 To Len(aPars) //Se não conseguir posicionar no parâmetro cria If !(SX6->(DbSeek(xFilial("SX6")+aPars[nAtual][1]))) RecLock("SX6",.T.) //Geral X6_VAR := aPars[nAtual][1] X6_TIPO := aPars[nAtual][2] X6_PROPRI := "U" //Descrição X6_DESCRIC := aPars[nAtual][3] X6_DSCSPA := aPars[nAtual][3] X6_DSCENG := aPars[nAtual][3] //Conteúdo X6_CONTEUD := aPars[nAtual][4] X6_CONTSPA := aPars[nAtual][4] X6_CONTENG := aPars[nAtual][4] SX6->(MsUnlock()) EndIf Next RestArea(aAreaX6) RestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Parabéns pelo site. Otimas informações, principalmente sobre Protheus, que é muito escasso encontrar coisas legais e bacanas na internet. Até mais…
Boa noite Juca.
Muito obrigado jovem.
Um grande abraço.
Seu post foi muito útil!! Muito obrigado!
Só um detalhe, na linha 21 tem essa atribuição: Local aPars := {}
Ela está limpando o array que está vindo como parâmetro.
Boa noite Pedro.
Rapaz, nem tinha percebido, acho que depois que documentei o fonte esqueci de deixar como Default ao invés de Local.
Obrigado, já ajustei a postagem.
Está disparando erro quando tento criar um parametro do tipo data…
Será que precisa de algum tratamento especifico?
Bom dia Ricardo.
Qual erro que está dando? Para eu poder testar e alterar aqui.
Abraços.
Boa tarde
Esse tipo de função não passa pelo codanalyse. Sei que essa função tem no maximo 4 anos. Teria alguma dica?
Bom dia Jose.
No caso qualquer manipulação do dicionário via código fonte não poderá ser mais realizada via AdvPL.
Então caso você precise manipular parâmetros customizados, você pode criar uma tabela, por exemplo Z01, e nela você cadastra o parâmetro e faz a manipulação dele.
Já para parâmetros padrões do sistema, não vejo alternativas por enquanto, há não ser que a TOTVS libere alguma forma de manipular, ai talvez seria interessante abrir um chamado perguntando se eles irão criar algum PutMV novo.