A diferença entre Abas, Paineis e Separadores no Protheus (tabela SXA)

Nesse artigo vamos demonstrar os tipos de separadores de campo disponíveis entre as tabelas SXA e SX3 no Protheus.

 

Abas

A informação fica salva na SXA, com os campos XA_AGRUP e XA_TIPO vazios. Sendo vinculados no campo X3_FOLDER. A chave é XA_ALIAS + XA_ORDEM = X3_ARQUIVO + X3_FOLDER.

 

Nesse estilo, ele separa os dados em abas / folders, e para cadastrar você precisa via Configurador na tabela, na parte “Pastas”.

 

Abaixo um print de onde cadastrar, e como fica a tela.

Abas normais

 

 

Painéis

A informação fica salva na SXA, sendo o campo XA_AGRUP com o código do agrupamento inserido e XA_TIPO como “1”. Sendo vinculados no campo X3_AGRUP. A chave é XA_ALIAS + XA_ORDEM = X3_ARQUIVO + X3_AGRUP.

 

Nesse estilo, ele separa os dados em em seções expandíveis, onde na direita da para clicar para expandir ou deixar “minimizado” a seção, e para cadastrar você precisa via Configurador na tabela, na parte “Agrupamentos” e com o tipo “Painel”.

 

Abaixo um print de onde cadastrar, e como fica a tela.

Paineis

 

 

Separadores

A informação fica salva na SXA, sendo o campo XA_AGRUP com o código do agrupamento inserido e XA_TIPO como “2”. Sendo vinculados no campo X3_AGRUP. A chave é XA_ALIAS + XA_ORDEM = X3_ARQUIVO + X3_AGRUP.

 

Nesse estilo, ele deixa com separações entre os dados, para cadastrar você precisa via Configurador na tabela, na parte “Agrupamentos” e com o tipo “Separador”.

 

Abaixo um print de onde cadastrar, e como fica a tela.

Separadores

 

 

 

Obs.: Para os 3 cenários acima, foi usado uma única tabela de teste ZC1 e o código foi o seguinte:

//Bibliotecas
#Include "Totvs.ch"
#Include "FWMVCDef.ch"

//Variveis Estaticas
Static cTitulo := "Teste de Cadastro"
Static cAliasMVC := "ZC1"

/*/{Protheus.doc} User Function zCFG01
Teste de Cadastro da tabela ZC1
@author Daniel Atilio
@since 14/01/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

User Function zCFG01()
	Local aArea   := GetArea()
	Local oBrowse
	Private aRotina := {}

	//Definicao do menu
	aRotina := MenuDef()

	//Instanciando o browse
	oBrowse := FWMBrowse():New()
	oBrowse:SetAlias(cAliasMVC)
	oBrowse:SetDescription(cTitulo)
	oBrowse:DisableDetails()

	//Ativa a Browse
	oBrowse:Activate()

	RestArea(aArea)
Return Nil

/*/{Protheus.doc} MenuDef
Menu de opcoes na funcao zCFG01
@author Daniel Atilio
@since 14/01/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function MenuDef()
	Local aRotina := {}

	//Adicionando opcoes do menu
	ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.zCFG01" OPERATION 1 ACCESS 0
	ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.zCFG01" OPERATION 3 ACCESS 0
	ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.zCFG01" OPERATION 4 ACCESS 0
	ADD OPTION aRotina TITLE "Excluir" ACTION "VIEWDEF.zCFG01" OPERATION 5 ACCESS 0

Return aRotina

/*/{Protheus.doc} ModelDef
Modelo de dados na funcao zCFG01
@author Daniel Atilio
@since 14/01/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function ModelDef()
	Local oStruct := FWFormStruct(1, cAliasMVC)
	Local oModel
	Local bPre := Nil
	Local bPos := Nil
	Local bCommit := Nil
	Local bCancel := Nil


	//Cria o modelo de dados para cadastro
	oModel := MPFormModel():New("zCFG01M", bPre, bPos, bCommit, bCancel)
	oModel:AddFields("ZC1MASTER", /*cOwner*/, oStruct)
	oModel:SetDescription("Modelo de dados - " + cTitulo)
	oModel:GetModel("ZC1MASTER"):SetDescription( "Dados de - " + cTitulo)
	oModel:SetPrimaryKey({})
Return oModel

/*/{Protheus.doc} ViewDef
Visualizacao de dados na funcao zCFG01
@author Daniel Atilio
@since 14/01/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function ViewDef()
	Local oModel := FWLoadModel("zCFG01")
	Local oStruct := FWFormStruct(2, cAliasMVC)
	Local oView

	//Cria a visualizacao do cadastro
	oView := FWFormView():New()
	oView:SetModel(oModel)
	oView:AddField("VIEW_ZC1", oStruct, "ZC1MASTER")
	oView:CreateHorizontalBox("TELA" , 100 )
	oView:SetOwnerView("VIEW_ZC1", "TELA")

Return oView

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Juarez Junior disse:

    Show!
    Valeu pela dica !
    Nas implantações que realizo do modulo de estoque, eu exploro bastante na rotina de cadastrado de produtos (MATA010), o uso de Separadores e Painéis. A instalação padrão mostra vários campos em uma única aba, e os usuários costumam ficar perdidos.

    O uso de Separadores e Painéis é somente em rotinas em MVC ?

    • Bom dia Juarez, tudo joia?

      Opa, nós que agradecemos pelo comentário.

      Então, nos testes que fiz, todos foram em MVC. Não cheguei a testar com telas antigas como mBrowse e AxCadastro. Ai não sei dizer se ele funciona nas antigas telas.

      Mas caso você queira testar, no Autumn tem gerador de telas em MVC (tem para Modelo 1, Modelo 2 e Modelo 3): https://autumncodemaker.com/

      Um grande abraço.

  2. Daniel Gonçalves Jr. disse:

    24 anos de Protheus e sempre aprendendo, estes recursos da tabela SXA ainda não tinha tomado conhecimento. Por isso assino a sessão Premium do Daniel Atílio, pois nos proporciona mais conhecimento que agrega em nossa carreira. Vale muito esta assinatura. Parabéns Daniel.

Deixe uma resposta

Terminal de Informação