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.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags mvc fwformmodelstruct ou faça a sua própria pergunta.