Usina BRAdvPL Guia
Entrar
← Todos os tópicos
GUIA PRÁTICOEm revisão

MVC mestre-detalhe com AddFields e AddGrid

MPFormModel():New(); AddFields(); AddGrid(); SetRelation()

Define mestre e detalhe com IDs e relação explícitos.

MVC mestre-detalhe com AddFields e AddGridAdvPL
01 · VISÃO GERAL

Visão geral

AddFields cria o primeiro submodelo, do tipo Field, para o mestre; AddGrid cria o detalhe com owner apontando para esse ID. SetRelation define como os dados do filho se ligam ao mestre e sua ordenação. O exemplo comunitário usa SBM/SB1; a adaptação usa tabelas fictícias ZZ1/ZZ2 para não sugerir alteração de cadastro padrão. A filial do filho é calculada por xFilial("ZZ2"), pois o compartilhamento pode diferir do mestre. O esquema e o índice devem ser criados e conferidos em homologação antes de avaliar o bloco. (Fontes: refs. 1–5.)

02 · SINTAXE

Sintaxe

MPFormModel():New(); AddFields(); AddGrid(); SetRelation()
03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"
#Include "FWMVCDef.ch"

User Function Ed554()
    // Exige dicionario de teste ZZ1/ZZ2.
    Local bConstruir := {|| BuildModel()}
    ConOut(ValType(bConstruir))
Return Nil

Static Function BuildModel()
    Local oModelo := MPFormModel():New("ED554M")
    Local oEstrutura := FWFormStruct(1,"ZZ1")
    oModelo:AddFields("ZZ1MASTER",Nil,oEstrutura)
    oModelo:AddGrid("ZZ2DETAIL","ZZ1MASTER",FWFormStruct(1,"ZZ2"))
    oModelo:SetRelation("ZZ2DETAIL",{{"ZZ2_FILIAL",'xFilial("ZZ2")'},;
        {"ZZ2_COD","ZZ1_COD"}},"ZZ2_FILIAL+ZZ2_COD+ZZ2_ITEM")
    oModelo:SetPrimaryKey({"ZZ1_FILIAL","ZZ1_COD"})
Return oModelo
Resultado esperado

Imprime B; o helper não é avaliado e não cria nem grava tabelas. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Conferir tipos e tamanhos de campos, chave primária, relação e índice real antes de ativar. Testar validação, cancelamento e persistência separadamente; a View deve apontar para os IDs dos submodelos corretos.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. MPFormModel. TDN. Consulta em 2026-10-27.
  2. TOTVS. FWFormModel. TDN. Consulta em 2026-10-27.
  3. TOTVS. FWFormView. TDN. Consulta em 2026-10-27.
  4. TOTVS. FWFormStruct. TDN. Consulta em 2026-10-27.
  5. Atilio. zMVCMd3.prw; commit 7d275a7. Consulta em 2026-10-27.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha