FWFormStruct

Gera estrutura de campos a partir da SX3 pra usar em ModelDef (tipo 1) ou ViewDef (tipo 2) do framework MVC.

Assinatura: FWFormStruct(nTipo, cAlias, bFiltro) -> oStruct

Retorna: object

FWFormStruct automatiza a criacao de estrutura de campos lendo o dicionario SX3 da tabela. Voce nao precisa declarar manualmente cada campo do cadastro — o framework lista todos os ativos da SX3.

Sintaxe

oStruct := FWFormStruct(nTipo, cAlias, bFiltro)
// nTipo: 1 = ModelDef (regras), 2 = ViewDef (visual)
// cAlias: tabela ("SB1", "SE1", etc.)
// bFiltro: bloco de codigo opcional pra filtrar campos

Uso basico

// No ModelDef:
Static Function ModelDef()
    Local oStruct := FWFormStruct(1, "SB1")
    Local oModel  := MPFormModel():New("FooMDL", , , {|o| .T.})
    oModel:AddFields("SB1MASTER", , oStruct)
Return oModel

// No ViewDef:
Static Function ViewDef()
    Local oStruct := FWFormStruct(2, "SB1")
    Local oView   := FWFormView():New()
    oView:SetModel(FWLoadModel("Foo"))
    oView:AddField("VIEW_SB1", oStruct, "SB1MASTER")
Return oView

Filtrar campos visiveis

Pra mostrar so um subset (nao todos os 200 da SB1):

// So campos especificos
Local aCampos := {"B1_COD", "B1_DESC", "B1_TIPO", "B1_UM", "B1_GRUPO"}
Local oStruct := FWFormStruct(2, "SB1", {|cCampo| aScan(aCampos, AllTrim(cCampo)) > 0})

Diferenca entre tipo 1 e 2

Pegadinhas

Parâmetros

NomeTipoObrigatórioDescrição
nTipoNumericsim1 = ModelDef, 2 = ViewDef
cAliasCharactersimAlias da tabela (deve estar na SX2)
bFiltroCodeBlocknãoBloco {|cCampo| condicao} pra filtrar

Exemplos

Struct simples

oStruct := FWFormStruct(1, "SA1")

Veja também