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.
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.
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.
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.
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.
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.
Grande Xará, bom dia, tudo joia?
Muito obrigado pelo comentário, é muita bondade e generosidade sua.
Um grande abraço.