Versão atual:

Erro "Cannot find method FWFORMMODELSTRUCT:GETFOLDERS" sem solucao

Bom dia pessoal, tenho um fonte especifico desenvolvido que faz uso do MVC com cabecalho é items mais quando tento incluir um novo item, tenho um error log com a mensagem

THREAD ERROR ([10392], alejandro.medina, NBK-ARG-019) 28/02/2020 12:38:56 Cannot find method FWFORMMODELSTRUCT:GETFOLDERS on FWFORMFIELD:PREPAREFIELDS(FWFORMFIELD.PRW) 19/02/2020 20:54:46 line : 275

, mais já atualizé com última LIB do Fev '20 é segue com mismo erro. Álguem já pasó com mismo erro? acho que o método devería estar no classe na LIB, ou isso depende do binario appserver?

Deixo o fonte completo:

#INCLUDE 'FWMVCDEF.CH'

/*
=====================================================================
| Programa | DSAOMS00 | Autor | Alejandro Medina |Fecha | 27/02/2020|
=====================================================================
|Descripción | Cierre de Fletes                                     |
=====================================================================
*/

User Function DSAOMS00()

Local oBrowse as object
Local aMVCVars as array 

//Seteo el array con datos que vamos a necesitar para el MVC
aMVCvars := SetMVCVars()

//Criação do objeoto Browse
oBrowse := FWMBrowse():New()

//Seta o Alias Browse
oBrowse:SetAlias(aMVCVars[2])

//Seta a descrição do Browse
oBrowse:SetDescription(Alltrim(Posicione("SX2",1,aMVCVars[2],"X2_NOMESPA")))

//Adicao de legendas
oBrowse:AddLegend("Empty(ZML_NUMOC)","GREEN","Cierre de Flete pendiente")
oBrowse:AddLegend("!Empty(ZML_NUMOC)","RED","Cierre de Flete Procesado")

oBrowse:SetMenuDef(aMVCVars[1])

//Grafico
oBrowse:SetAttach(.F.)

//Ativa o Browse
oBrowse:Activate()

Return()

/*
=======================================
= Definición de datos base para MVC   =
=======================================
*/
Static Function SetMVCVars()
/*
Devuelve array con datos de variables para usar por el objeto MVC

[1] = Modelo - ej. 'DSAFAT01'
[2] = Alias Primario - ej. 'ZMA'
[3] = Clave Primaria - ej. {"ZMA_FILIAL", "ZMA_CODIGO"}
[4] = Alias Detalle- ej. 'ZMB'
[5] = Clave Detalle - ej. {"ZMB_FILIAL", "ZMB_CODIGO"}

*/
Local aVarsMVC := {'DSAOMS00','ZML',{'ZML_FILIAL','ZML_IDFLET'},'ZMF',{'ZMF_FILIAL','ZMF_IDFLET'},"ZMF_ITLOTE"}

Return(aVarsMVC)

/*
=======================================
= Armado del Menudef                  =
=======================================
*/
Static Function MenuDef()

Local aRotina := {}
Local aMVCvars := SetMVCVars()

ADD OPTION aRotina TITLE "Buscar" ACTION 'PesqBrw' OPERATION 1 ACCESS 0
ADD OPTION aRotina Title "Visualizar"    Action "VIEWDEF."+aMVCVars[1] OPERATION 2 ACCESS 0
ADD OPTION aRotina Title "Incluir"        Action "VIEWDEF."+aMVCVars[1] OPERATION 3 ACCESS 0
ADD OPTION aRotina Title "Alterar"        Action "VIEWDEF."+aMVCVars[1] OPERATION 4 ACCESS 0
ADD OPTION aRotina Title "Excluir"        Action "VIEWDEF."+aMVCVars[1] OPERATION 5 ACCESS 0
ADD OPTION aRotina Title "Imprimir"        Action "VIEWDEF."+aMVCVars[1] OPERATION 8 ACCESS 0
ADD OPTION aRotina Title "Copiar"        Action "VIEWDEF."+aMVCVars[1] OPERATION 9 ACCESS 0

Return(aRotina)

/*
=======================================
= Definición de Modelo MVC            =
=======================================
*/
Static Function ModelDef()

Local aMVCvars := SetMVCVars()
// Cria a estrutura a ser usada no Modelo de Dados
Local oStruMaster := FWFormStruct(1, aMVCVars[2], /*bAvalCampo*/,/*lViewUsado*/)
Local oStruDetail := FWFormStruct(1, aMVCVars[4], /*bAvalCampo*/,/*lViewUsado*/)

// Cria o objeto do Modelo de Dados
Local oModel := MPFormModel():New(aMVCVars[2]+'MODEL', /*bPreValidacao*/, /*bPosValidacao*/, /*bCommit*/, /*bCancel*/)

// Adiciona ao modelo uma estrutura de formulário de edição por campo
oModel:AddFields(aMVCVars[2]+'MASTER', /*cOwner*/, oStruMaster, /*bPreValidacao*/, /*bPosValidacao*/, /*bCarga*/)
oModel:AddGrid(aMVCVars[4]+'DETAIL', aMVCVars[2]+'MASTER', oStruDetail, /*bPreValidacao*/, /*bPosValidacao*/, /*bCarga*/)

// Faz relaciomaneto entre os compomentes do model
oModel:SetRelation(aMVCVars[4]+'DETAIL',{{aMVCVars[5][1],'xFilial('+aMVCVars[4]+')'},{aMVCVars[5][2],aMVCVars[3][2]} }, (aMVCVars[4])->(IndexKey(1)))

// Liga o controle de nao repeticao de linha
oModel:GetModel(aMVCVars[4]+'DETAIL'):SetUniqueLine({aMVCVars[6]})

// Adiciona a descricao do Modelo de Dados
oModel:SetDescription(Alltrim(Posicione("SX2",1,aMVCVars[2],"X2_NOMESPA")))

// Adiciona a descricao do Componente do Modelo de Dados
oModel:GetModel(aMVCVars[2]+'MASTER'):SetDescription(Alltrim(Posicione("SX2",1,aMVCVars[2],"X2_NOMESPA")))
oModel:GetModel(aMVCVars[4]+'DETAIL'):SetDescription(Alltrim(Posicione("SX2",1,aMVCVars[4],"X2_NOMESPA")))

//Chave Primaria
oModel:SetPrimaryKey(aMVCVars[3])

Return(oModel)

/*
=======================================
= Definición de View de Modelo MVC     =
=======================================
*/
Static Function ViewDef()

Local aMVCvars := SetMVCVars()  
// Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
Local oModel := FWLoadModel(aMVCVars[1])

// Cria a estrutura a ser usada na View
Local oStruMaster := FWFormStruct(1, aMVCVars[2], /*bAvalCampo*/,/*lViewUsado*/)
Local oStruDetail := FWFormStruct(1, aMVCVars[4], /*bAvalCampo*/,/*lViewUsado*/)

// Cria o objeto de View
Local oView := FWFormView():New()

// Define qual o Modelo de dados será utilizado
oView:SetModel(oModel)

//Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
oView:AddField('VIEW'+aMVCVars[2], oStruMaster, aMVCVars[2]+'MASTER')
//Adiciona no nosso View um controle do tipo FormGrid(antiga newgetdados)
oView:AddField('VIEW'+aMVCVars[4], oStruDetail, aMVCVars[4]+'DETAIL')

// Criar um "box" horizontal para receber algum elemento da view
oView:CreateHorizontalBox('SUPERIOR',30)
oView:CreateHorizontalBox('INFERIOR',70)

// Relaciona o ID da View com o "box" para exibicao
oView:SetOwnerView('VIEW'+aMVCVars[2], 'SUPERIOR')
oView:SetOwnerView('VIEW'+aMVCVars[4], 'INFERIOR')

// Define campos que terao Auto Incremento
//oView:AddIncrementField('VIEW'+aMVCVars[4], aMVCVars[6])

// Criar novo botao na barra de botoes
//oView:AddUserButton( 'Incluir Lote Flete', 'CLIPS', { |oView| DSAOMS00B() } )

// Liga a identificacao do componente
oView:EnableTitleView('VIEW'+aMVCVars[4],Alltrim(Posicione("SX2",1,aMVCVars[4],"X2_NOMESPA")))

// Liga a Edição de Campos na FormGrid
oView:SetViewProperty('VIEW'+aMVCVars[4],"ENABLEDGRIDDETAIL",{50})

//Indica se a janela deve ser fechada ao final da operação. Se ele retornar .T. (verdadeiro) fecha a janela
oView:bCloseOnOK := {|| .T.}

Return oView

Obrigado pela ajuda que podan brindar.

Versão (1):

Ver a versão formatada

Erro "Cannot find method FWFORMMODELSTRUCT:GETFOLDERS" sem solucao

Comentário

new question