Função para criar parâmetros (SX6) via código fonte em AdvPL

Olá pessoal…

Hoje vou mostrar uma função que desenvolvi que serve para criar parâmetros específicos via código fonte em AdvPL.

AdvPL
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 aPars		:= {}
	Local aArea		:= GetArea()
	Local aAreaX6		:= SX6->(GetArea())
	
	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

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

2 opiniões sobre “Função para criar parâmetros (SX6) via código fonte em AdvPL

  • maio 5, 2017 em 11:46 pm
    Permalink

    Parabéns pelo site. Otimas informações, principalmente sobre Protheus, que é muito escasso encontrar coisas legais e bacanas na internet. Até mais…

    Resposta

Deixe uma resposta