MVC maestro-detalle con AddFields y AddGrid
MPFormModel():New(); AddFields(); AddGrid(); SetRelation()Define maestro/detalle con IDs y relación explícitos.
Descripción general
AddFields crea primer submodelo Field para maestro; AddGrid crea detalle cuyo owner es ese ID. SetRelation define vínculo/ordenación. Ejemplo comunitario usa SBM/SB1; adaptación usa tablas ficticias ZZ1/ZZ2 para evitar sugerir cambios estándar. Filial del hijo usa xFilial("ZZ2") porque compartición puede diferir. Crear/comprobar esquema e índice en pruebas antes de evaluar bloque. (Fuentes: refs. 1–5.)
Sintaxis
MPFormModel():New(); AddFields(); AddGrid(); SetRelation()Ejemplo comentado
#Include "Protheus.ch"
#Include "FWMVCDef.ch"
User Function Ed554()
// Exige diccionario de prueba ZZ1/ZZ2.
Local bConstruir := {|| BuildModel()}
ConOut(ValType(bConstruir))
Return Nil
Static Function BuildModel()
Local oModelo := MPFormModel():New("ED554M")
Local oEstructura := FWFormStruct(1,"ZZ1")
oModelo:AddFields("ZZ1MASTER",Nil,oEstructura)
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 oModeloImprime B; no evalúa auxiliar ni crea/graba tablas. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.
- Verificar tipos/anchos, clave primaria, relación e índice antes de activar. Probar validación, cancelación y persistencia por separado; View debe usar IDs correctos.
- En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.