Sei sulla pagina 1di 39

12/01/2018 Exibir origem

import.css=/download/attachments/327912/newLayout.css

Classe: FWFormModel

Compatível Países: Todos

Sistemas Operacionais: Todos

Compatível às Bases de Dados: Todos

Nível de Acesso: Nível 1 (Acesso Clientes)

Idiomas: Português, Inglês, Espanhol

Versão Todas

Descrição

Classe responsável pelo controle das regras de negócio.


Esta classe permite o encapsulamento das regras de negócio baseadas em Submodelos,
Estrutura de Dados e validações em código. Por conta disto cria um ambiente
padronizado, extensível a diversas midias e propício a reutilização de código.

O Model é composto basicamente por Submodelos. Um SubModelo representa uma entidade


e permite manipular registros. Existem basicamente dois tipos de Submodelo, o
formfield e o formgrid. O primeiro permite manipular somente um registro por vez
e o segundo permite manipular vários registros ao mesmo tempo.

A regra de negócio pode definir os seguintes itens:


- Submodelos de edição, tais como FormField(edição de apenas uma linha) e
FormGrid(edição de várias linhas)
- Regras de Dependência entre os Submodelos
- Validação de Campos
- Validação de Submodelo
- Validação Geral
- Persistência(gravação) dos dados
- Estrutura de Dados para os submodelos

O Model é totalmente segregado, ele pode ser usado em uma interface ou pode
ser usado em WebServices, Rotinas Automáticas ou outras opções sem interação
visual com o usuário.

Como o Model é separado da interface, não é permitido usar nenhum componente


de interface no código, tais como Alert, MsgAlert e etc.. A única exceção à regra
é a função Help. O MVC trata essa função e quando a mesma é usada no Model
e não há interface, a mensagem de erro fica guardada no model e pode ser acessada
usando o método GetErrorMessage()

Veja também

Submodelos:
FWFormGridModel
FWFormFieldsModel

Estrutura de Dados:
FWFormModelStruct
FWFormStruct

New

Sintaxe

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 1/39
12/01/2018 Exibir origem

FWFORMMODEL():New([ cID ], [ bPre ], [ bPost ], [ bCommit ], [ bCancel ])-> NIL

Descrição
Método construtor da classe

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cID Caracteres Identificador do modelo X

bPre Bloco de Bloco de código de pré-validação do modelo. {|| .T.}


Código O bloco recebe como parametro o objeto de
Model e deve retornar um valor lógico.
Quando houver uma tentativa de atualização de
valor de qualquer Submodelo o bloco de código
será invocado.
Caso o retorno seja verdadeiro, a alteração
será permitida, se retornar falso não será
possível concluir a alteração e um erro será
atribuido ao model, sendo necessário indicar a
natureza do erro através do método
SetErrorMessage.

bPost Bloco de Bloco de código de pós-validação do modelo, {|| .T.}


Código equilave ao "TUDOOK".
O bloco recebe como parametro o objeto de
Model e deve retornar um valor lógico.
O bloco será invocado antes da persistência
dos dados para validar o model.
Caso o retorno seja verdadeiro e não haja
nenhum submodelo invalido, será feita a
gravação dos dados.
Se retornar falso não será possível realizar a
gravação e um erro será atribuido ao model,
sendo necessário indicar a natureza do erro
através do método SetErrorMessage.

bCommit Bloco de Bloco de código de persistência dos dados, ele X


Código é invocado pelo método CommitData.
O bloco recebe como parametro o objeto do
Model e deve realizar a gravação dos dados.

bCancel Bloco de Bloco de código de cancelamento da edição, X


Código ele é invocado pelo método CancelData.
O bloco recebe como parametro o objeto do
Model.

Exemplo

Static Function ModelDef()


Local oModel := FWFormModel():New('COMP011MODEL', , { |oMdl| COMP011POS( oMdl ) }, {|oModel| commit()},
{|oModel| cancel()})
Return

Static Function COMP011POS( oModel )


Local nOperation := oModel:GetOperation()
Local lRet := .T.

If nOperation == MODEL_OPERATION_UPDATE
If Empty( oModel:GetValue( 'ZA0MASTER', 'ZA0_DTAFAL' ) )
oModel:SetErrorMessage('ZA0MASTER', 'ZA0_DTAFAL' , 'ZA0MASTER' , 'ZA0_DTAFAL' , "Erro", 'Data incorreta',
'Informe a data')
lRet := .F.
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 2/39
12/01/2018 Exibir origem

EndIf
EndIf

Return lRet

Static Function commit()


Return

Static Function cancel()


Return

Observações

Se a aplicação é uma Function, o identificador (cID) do modelo de dados (Model) pode


ter o mesmo nome da função principal e esta prática é recomendada para facilitar a
codificação. Por exemplo, se estamos escrevendo a função XPTO, o identificador (cID) do
modelo de dados (Model) poderá ser XPTO.
Se a aplicação é uma User Function o identificador (ID) do modelo de dados (Model)
NÃO pode ter o mesmo nome da função principal, isso por causa dos pontos de entrada
que já são criados automaticamente quando desenvolvemos uma aplicação em MVC.

User Function COMP011_MVC


Local oModel := FWFormModel():New("COMP011",,,{|oModel| commit()},{|oModel| cancel()})
Return

Function COMP012_MVC
Local oModel := FWFormModel():New("COMP012_MVC",,,{|oModel| commit()},{|oModel| cancel()})
Return

Veja também

Método setErrorMessage
Activate

Sintaxe
FWFORMMODEL():Activate([ lCopy ])-> NIL

Descrição
Método de ativação da classe. Esse método deve ser usado depois
que o objeto já foi completamente definido, pois após a ativação
não será mais possível realizar definições, tais como addField,
addGrid, setActivate e etc..
Quando a classe é ativada, os dados do submodelo são carregados.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lCopy Lógico Informa se o model deve carregar os dados do registro .F.


posicionado em operações de inclusão.
Essa opção é usada quando é necessário fazer uma
operação de cópia.

Observações
Este método realiza algumas validações no preenchimento dos
parametros de operação da classe, gerando uma exceção caso haja
algum problema de configuração.
DeActivate

Sintaxe
FWFORMMODEL():DeActivate()-> NIL

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 3/39
12/01/2018 Exibir origem

Descrição
Método de desativação da classe. Quando a classe é desativada, os dados
do submodelo são perdidos e o objeto passa a aceitar novamente
os métodos de parametrização, tais como addField, setActivate e etc.
Este método deve ser utilizado para reparametrizar a classe ou para
reinicializar o preenchimento do submodelo.

Destroy

Sintaxe
FWFORMMODEL():Destroy()-> NIL

Descrição
Destroy o objeto e suas referencias a outros objetos.
O Objeto não pode ter sido desativado.
Importante chamar principalmente quando instanciamos o mesmo em loop.

ClassName

Sintaxe
FWFORMMODEL():ClassName()-> cClassName

Descrição
Fornece o nome da classe

Retorno
cClassName Nome da classe
GetId

Sintaxe
FWFORMMODEL():GetId()-> Id

Descrição
Fornece o Id do objeto informado no método new.

Retorno
Id Id do objeto
SetDescription

Sintaxe
FWFORMMODEL():SetDescription([ cDescription ])-> NIL

Descrição
Atribui ao modelo um texto explicativo sobre o objetivo do Modelo.
O objetivo é mostrado em diversos operações, tais como web services,
relatórios e schemas (xsd).

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cDescription Caracteres Descrição do objetivo do modelo X

Observações
Este método somente pode ser utilizado se o objeto estiver desativado
GetDescription

Sintaxe
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 4/39
12/01/2018 Exibir origem

FWFORMMODEL():GetDescription()-> cDescription

Descrição
Fornece um texto contendo a descrição do modelo, que é informado
no método SetDescription.

Retorno
cDescription Descrição do objetivo do modelo

Veja também
SetDescription
AddFields

Sintaxe
FWFORMMODEL():AddFields([ cId ], [ cOwner ], [ oModelStruct ], [ bPre ], [ bPost ], [ bLoad ])-> NIL

Descrição
Adiciona ao modelo um submodelo de edição por campo (FormField).
Um submodelo do tipo Field permite manipular somente um
registro por vez. Ele tem um relacionamento do tipo 1xN ou 1x1 com outros
SubModelos ou então não tem nenhum relacionamento.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cId Caracteres Identificador do modelo. O Id será X


solicitado em diversas operações com este
submodelo.

cOwner Caracteres Identificador superior do submodelo, o ""


Owner é o submodelo que se relaciona
diretamente com o formfield.

oModelStruct Objeto Objeto com a estrutura de dados do tipo X


FWFormModelStruct.

bPre Bloco de Bloco de Código de pré-validação do {|| .T.}


Código submodelo.
Esse bloco é invocado quando há uma
tentativa de atribuição de valores. O bloco
recebe por
parametro o objeto do
FormField(FWFormFieldsModel), a
identificação da ação e a identificação
do campo que está sofrendo a atribuição.
As identificações que podem ser passadas
são as seguintes:
- "CANSETVALUE" : valida se o submodelo
pode ou não receber atribuição de valor.
- "SETVALUE" : valida se o campo do
submodelo pode receber aquele valor.
Nesse caso o bloco recebe
um quarto parametro que contem o valor
que está sendo atribuido ao campo.
Para todos os casos o bloco deve retornar
um valor lógico, indicando se a ação pode
ou não ser executada.
Se o retorno for falso um erro será atribuido
no Model, sendo necessário indicar a
natureza do erro através do método
SetErrorMessage.

bPost Bloco de Bloco de Código de pós-validação do {|| .T.}


Código submodelo, ele é equivalente ao

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 5/39
12/01/2018 Exibir origem

"TUDOOK".
O bloco de código recebe como parametro
o objeto de model do
FormField(FWFormFieldsModel) e deve
retornar um valor lógico.
Este bloco é invocado antes da
persistência(gravação) dos dados,
validando o submodelo .
Se o retorno for verdadeiro a gravação será
realizada se os demais submodelos
também estiverem validos, do contrário um
erro será atribuido no Model, sendo
necessário indicar a natureza do erro
através do método SetErrorMessage.

bLoad Bloco de Bloco de carga dos dados do submodelo.


Código Este bloco será invocado durante a
execução do método activate desta classe.
O bloco recebe por parametro o objeto de
model do FormField(FWFormFieldsModel)
e um valor lógico indicando se é uma
operação de cópia.
Espera-se como retorno um array com os
dados que serão carregados no objetp, o
array deve ter a estrutura abaixo:
[1] Array com os dados, a ordem dos dados
deve seguir exatamente a mesma ordem
dos campos da estrutura de dados
[1][1] "Nome"
[1][2] "Cidade"
[2] ExpN: Id do registro (RecNo)

Exemplo

Static Function ModelDef()


Local oModel
Local oStruZA1:= FWFormStruct(1,'ZA1')
Local bPre := {|oFieldModel, cAction, cIDField, xValue| validPre(oFieldModel, cAction, cIDField, xValue)}
Local bPos := {|oFieldModel|fieldValidPos(oFieldModel)}
Local bLoad := {|oFieldModel, lCopy| loadField(oFieldModel, lCopy)}

oModel := FWFormModel():New('COMP021',,,{|oModel| commit()},{|oModel| cancel()})


oModel:addFields('ZA1MASTER',,oStruZA1,bPre,bPos,bLoad)

Return oModel

Static Function fieldValidPos(oFieldModel)


Local lRet := .T.

If "MUSICA" $ Upper(oFieldModel:GetValue("ZA1_TITULO"))
lRet := .F.
oFieldModel:GetModel():SetErrorMessage('ZA1MASTER', "ZA1_TITULO" , 'ZA1MASTER' , 'ZA1_TITULO' , "Erro",
'Título incorreto', 'O texto "musica" não pode estar contido no título.')
EndIf

Return lRet

Static Function validPre(oFieldModel, cAction, cIDField, xValue)


Local lRet := .T.

If cAction == "SETVALUE" .And. cIDField == "ZA1_FILIAL"


lRet := .F.
oFieldModel:GetModel():SetErrorMessage('ZA1MASTER', "ZA1_FILIAL" , 'ZA1MASTER' , 'ZA1_FILIAL' , "Erro",
'Filial', 'Não possível atribuir valor ao campo Filial.')
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 6/39
12/01/2018 Exibir origem

Return

Return lRet

Static Function loadField(oFieldModel, lCopy)


Local aLoad := {}

aAdd(aLoad, {xFilial("ZA1"), "000001", "Musica 1", Date(), "R"}) //dados


aAdd(aLoad, 1) //recno

Return aLoad

Static Function commit()


Return

Static Function cancel()


Return

Observações

O primeiro SubModelo do Model deve ser, obrigatoriamente, um FormField.

Veja também

FWFormModelStruct
FWFormStruct
FWFormFieldModel
Método SetErrorMessage
AddGrid

Sintaxe
FWFORMMODEL():AddGrid([ cId ], [ cOwner ], [ oModelStruct ], [ bLinePre ], [ bLinePost ], [ bPre ], [ bPost ], [ bLoad
])-> NIL

Descrição
Adiciona ao modelo um submodelo de edição por grid (FormGrid).
Um submodelo do tipo Grid permite manipular diversos registros por
vez. Ele tem um relacionamento do tipo Nx1 ou NxM com outros Submodelos.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cId Caracteres Identificador do modelo. X


O Id será solicitado em diversas operações
com este submodelo.

cOwner Caracteres Identificador superior do submodelo. X


O Owner é o submodelo que se relaciona
diretamente com o formgrid.

oModelStruct Objeto Objeto com a estrutura de dados do tipo X


FWFormModelStruct.

bLinePre Bloco de Bloco de Código de pre-edição da linha do {|| .T.}


Código grid.
O bloco é invocado na deleção de linha, no
undelete da linha e nas tentativas de
atribuição de valor.
Recebe como parametro o objeto de
modelo do FormGrid(FWFormGridModel),
o número da linha atual e a identificação da
ação.
A Identificação da ação pode ser um dos
itens abaixo:
- "UNDELETE"

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 7/39
12/01/2018 Exibir origem

- "DELETE"
- "SETVALUE" : nesse caso, serão
passados mais três parametros. O 4º
parametro é o identificador do campo que
está sendo atualizado,
o 5º parametro é o valor que está sendo
atribuido e o 6º parametro é o valor que
está atualmente no campo.
- "CANSETVALUE" : nesse caso será
passado mais um parametro. O 4º
parametro é o identificador do campo que
está tentando ser atualizado.
O retorno do bloco deve ser um valor lógico
que indique se a linha está valida para
continuar com a ação.
Se retornar verdadeiro, executa a ação do
contrário atribui um erro ao Model, sendo
necessário indicar a natureza do erro
através do método SetErrorMessage.

bLinePost Bloco de Bloco de código de pós validação da linha {|| .T.}


Código do grid, equivale ao "LINHAOK"
Recebe como parametro o objeto de
modelo do FormGrid(FWFormGridModel) e
o número da linha que está sendo validada.
O bloco será invocado antes da gravação
dos dados e na inclusão de uma linha.
Espera-se um retorno lógico do bloco
indicando se a linha está ou não valida.
Caso o retorno seja falso um erro será
atribuido no Model e a gravação não será
realizada, sendo necessário indicar a
natureza do erro através do método
SetErrorMessage.

bPre Bloco de Bloco de Código de pré-validação do {|| .T.}


Código submodelo.
O bloco é invocado na deleção de linha, no
undelete da linha, na inserção de uma linha
e nas tentativas de atribuição de valor.
Recebe como parametro o objeto de
modelo do FormGrid(FWFormGridModel),
o número da linha atual e a identificação da
ação.
A Identificação da ação pode ser um dos
itens abaixo:
- "UNDELETE"
- "DELETE"
- "ADDLINE" : nesse caso não será
passado nada para o parametro de numero
de linha
- "SETVALUE" : nesse caso, serão
passados mais três parametros. O 4º
parametro é o identificador do campo que
está sendo atualizado,
o 5º parametro é o valor que está sendo
atribuido e o 6º parametro é o valor que
está atualmente no campo.
- "CANSETVALUE" : nesse caso será
passado mais um parametro. O 4º
parametro é o identificador do campo que
está tentando ser atualizado.
O retorno do bloco deve ser um valor lógico
que indique se a linha está valida para
continuar com a ação.
Se retornar verdadeiro, executa a ação do
contrário atribui um erro ao Model, sendo
necessário indicar a natureza do erro
através do método SetErrorMessage.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 8/39
12/01/2018 Exibir origem

O bloco de código recebe como parametro


o objeto de modelo do
FormGrid(FWFormGridModel) e deve
retornar um valor lógico.
Este bloco é invocado em toda tentativa de
atualização dos valores do submodelo.
Se o retorno do bloco for verdadeiro a
atualização é permitida, do contrário um
erro será atribuido no Model, sendo
necessário indicar a natureza do erro
através do método SetErrorMessage.

bPost Bloco de Bloco de Código de pós-validação do {|| .T.}


Código submodelo, ele é equivalente ao
"TUDOOK".
O bloco de código recebe como parametro
o objeto de model do
FormGrid(FWFormGridModel) e deve
retornar um valor lógico.
Este bloco é invocado antes da
persistência(gravação) dos dados,
validando o submodelo .
Se o retorno do bloco for verdadeiro a
gravação será realizada se os demais
submodelos também estiverem validos, do
contrário um erro será atribuido no Model,
sendo necessário indicar a natureza do
erro através do método SetErrorMessage.

bLoad Bloco de Bloco de carga dos dados do submodelo. {|| {} }


Código Este bloco será invocado durante a
execução do método activate desta classe.
O bloco recebe por parametro o objeto de
model do FormGrid(FWFormGridModel) e
um valor lógico indicando se é uma
operação de cópia.
Espera-se como retorno um array com os
dados que serão carregados no objeto, o
array deve ter a estrutura abaixo:
[n]
[n][1] ExpN: Id do registro (RecNo)
[n][2] Array com os dados, os dados devem
seguir exatamente a mesma ordem da
estrutura de dados

Exemplo

Static Function ModelDef()


Local oModel
Local oStruZA1:= FWFormStruct(1,'ZA1')
Local oStruZA2 := FWFormStruct( 1, 'ZA2')
Local bLinePre := {|oGridModel, nLine, cAction, cIDField, xValue, xCurrentValue| linePreGrid(oGridModel, nLine,
cAction, cIDField, xValue, xCurrentValue)}
Local bLoad := {|oGridModel, lCopy| loadGrid(oGridModel, lCopy)}

oModel := FWFormModel():New('COMP021',,,{|oModel| commit()},{|oModel| cancel()})


oModel:AddFields('ZA1MASTER',,oStruZA1)
oModel:AddGrid( 'ZA2DETAIL', 'ZA1MASTER', oStruZA2, bLinePre, , , ,bLoad)
Return oModel

Static Function loadGrid(oGridModel, lCopy)


Local aLoad := {}

aAdd(aLoad,{0,{xFilial("ZA2"), "000001", "01", "000100","AUTOR1","AUTOR"}})


http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 9/39
12/01/2018 Exibir origem

aAdd(aLoad,{0,{xFilial("ZA2"), "000001", "02", "000102","AUTOR2","AUTOR"}})


aAdd(aLoad,{0,{xFilial("ZA2"), "000001", "03", "000104","AUTOR3","AUTOR"}})
aAdd(aLoad,{0,{xFilial("ZA2"), "000001", "04", "000105","AUTOR4","AUTOR"}})
aAdd(aLoad,{0,{xFilial("ZA2"), "000001", "05", "000106","AUTOR5","AUTOR"}})

Return aLoad

Static Function linePreGrid(oGridModel, nLine, cAction, cIDField, xValue, xCurrentValue)


Local lRet := .T.

If cAction == "SETVALUE"
If oGridModel:GetValue("ZA2_TIPO") == "AUTOR"
lRet := .F.
oGridModel:GetModel():SetErrorMessage('ZA2DETAIL', 'ZA2_TIPO' , 'ZA2DETAIL' , 'ZA2_TIPO' , 'Erro', 'Não é
possível alterar linhas do tipo Autor', '')
EndIf
EndIf

Return lRet

Static Function commit()


Return

Static Function cancel()


Return

Observações

O Model deve sempre iniciar com um submodelo do tipo Field

Veja também

Método SetErrorMessage
FWFormGridModel
FWFormModelStruct
AddCalc

Sintaxe
FWFORMMODEL():AddCalc([ cId ], [ cOwner ], [ cIdForm ], [ cIdField ], [ cIdCalc ], [ cOperation ], [ bCond ], [ bInitValue
], [ cTitle ], [ bFormula ], [ nTamanho ], [ nDecimal ])-> NIL

Descrição
Adiciona ao modelo um submodelo de campos calculados baseado em campos de
um submodelo do tipo grid. Esse submodelo deve ser usado para
fazer calculos, por exemplo, pode-se criar um calc para somar a coluna
valor total do item, tendo assim o total de todos os itens.
Pode-se criar um calc do tipo média e fazer a média das quantidades
de um grid, por exemplo.
O submodelo calc suporta diversos campos de calculo, precisando ter
no minimo 1 e no máximo N. Ou seja, pode-se criar um calc "TOTAIS"
e dentro dele criar dois campos calculado, um para o total e outro para
a média.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cId Caracteres Identificador do submodelo. O Id será X


solicitado em diversas operações.

cOwner Caracteres Identificador owner do submodelo. Esse ID X


correponde ao owner do grid usado como
base para o submodelo calc.

cIdForm Caracteres Identificador do submodelo do tipo grid que X


será a base para os calculos.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 10/39
12/01/2018 Exibir origem

cIdField Caracteres Identificador do campo que será a base do X


calculo.

cIdCalc Caracteres Identificador para o campo que será X


calculado.

cOperation Caracteres Identificador da operação a ser realizada ( "SUM"


SUM, COUNT, AVG, FORMULA )

bCond Bloco de Bloco de código referente a condicão para


Código avaliação do campo calculado.
Recebe como parametro o objeto do
model(FwFormModel) e deve retornar um
valor lógico.
Se o retorno for verdadeiro, executa a
operação para o campo calculado.

bInitValue Bloco de Bloco de codigo para com o valor inicial para


Código o campo calculado.
Recebe como parametro o objeto do modelo e
deve retornar o valor inicial.

cTitle Caracteres Titulo do campo calculado. CIDCALC

bFormula Bloco de Formula a ser utilizada quando o parametro X


Código operacao é do tipo FORMULA.
Recebe como parametros:
- o objeto do model (FwFormModel)
- o valor da atual do campo calculado
- o conteudo do campo do submodelo Grid
- campo logico indicando se é uma execuçao
de soma (.T.) ou subtracao (.F.).
O valor retornado será atribuido ao campo
calculado.
Exemplo:
{|oModel,nTotalAtual,xValor,lSomando|
Calculo(oModel,nTotalAtual,xValor,lSomando)}

nTamanho Numérico Tamanho do campo calculado, se nao for X


informado usa o tamanho do campo base.

nDecimal Numérico Numero de casas decimais do campo X


calculado, se nao for informado usa o
tamanho do decimal do campo base.

Exemplo

Static Function ModelDef()


// Cria a estrutura a ser usada no Modelo de Dados
Local oStruZA1 := FWFormStruct( 1, 'ZA1')
Local oStruZA2 := FWFormStruct( 1, 'ZA2')
Local oModel

oModel := FWFormModel():New( 'COMP022M',,,{|oModel| commit()},{|oModel| cancel()})


oModel:AddFields( 'ZA1MASTER', , oStruZA1)
oModel:AddGrid( 'ZA2DETAIL', 'ZA1MASTER', oStruZA2)

oModel:AddCalc( 'COMP022CALC1', 'ZA1MASTER', 'ZA2DETAIL', 'ZA2_AUTOR', 'ZA2__TOT01', 'COUNT', { | oMld |


COMP022CAL( oMld, .T. ) },,'Total Pares' )
oModel:AddCalc( 'COMP022CALC1', 'ZA1MASTER', 'ZA2DETAIL', 'ZA2_AUTOR', 'ZA2__TOT02', 'COUNT', { | oMld |
COMP022CAL( oMld, .F. ) },,'Total Impares' )

oModel:SetRelation( 'ZA2DETAIL', { { 'ZA2_FILIAL', 'xFilial( "ZA2" ) ' } , { 'ZA2_MUSICA', 'ZA1_MUSICA' } } , ZA2->(


IndexKey( 1 ) ) )

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 11/39
12/01/2018 Exibir origem

oModel:SetDescription( 'Modelo de Musicas' )


oModel:GetModel( 'ZA1MASTER' ):SetDescription( 'Dados da Musica' )
oModel:GetModel( 'ZA2DETAIL' ):SetDescription( 'Dados do Autor' )

Return oModel

Static Function COMP022CAL( oModel, lPar )


Local lRet := .T.

If lPar
lRet := ( Mod( Val( oModel:GetValue( 'ZA2DETAIL', 'ZA2_AUTOR' ) ) , 2 ) == 0 )
Else
lRet := ( Mod( Val( oModel:GetValue( 'ZA2DETAIL', 'ZA2_AUTOR' ) ) , 2 ) <> 0 )
EndIf
Return lRet

Static Function commit()


Return

Static Function cancel()


Return

Observações

Um submodelo de calc somente pode ser criado abaixo de um submodelo do tipo grid
AddRules

Sintaxe
FWFORMMODEL():AddRules([ cIDSubModel ], [ cIDField ], [ cIDTargetSubModel ], [ cIDFieldTarget ], [ nType ])-> NIL

Descrição
Adiciona uma relação de dependência entre dois campos, definindo que o
preenchimento de um campo depende do preenchimento de outro.
Por exemplo, podemos definir que o campo Código da Loja só pode ser
preenchido após o preenchimento do campo Código do Cliente.
A regra pode ser criada com campos do mesmo submodelo ou com campos de submodelos diferentes.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIDSubModel Caracteres Identificador do submodelo do X


campo receptor

cIDField Caracteres Identificador do campo receptor X

cIDTargetSubModel Caracteres Identificador do submodelo do X


campo disparador

cIDFieldTarget Caracteres Identificador do campo disparador ""

nType Numérico Identificador da operacao de 3


relacionamento. Existem três
opções:
Tipo 1 - Pré Validação: Adiciona uma
relação de dependência entre os
campos, impedindo a atribuição de
valor caso os campos de
dependência
não tenham valor atribuído. Por
exemplo, o preenchimento do campo
Código da Loja só pode ser
preenchido após o preenchimento
do
campo Código do Cliente.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 12/39
12/01/2018 Exibir origem

Tipo 2 - Pós Validação: Adiciona


uma relação de dependência entre o
receptor
e o disparador, provocando uma
reavaliação em caso de atualização
do campo receptor.
Por exemplo, após o preenchimento
do campo Código da Loja a
validação é reavaliado
caso o Código do Cliente seja
alterado.

Tipo 3 - Ambas : Aplica a pré e a pós


validação simultaneamente.

Exemplo

//campo Loja dependendo do preenchimento do campo Cliente


oModel:AddRules( 'ZA1MASTER', 'A1_LOJA', 'ZA1MASTER', 'A1_CLIENTE', 3)

//Campo autor do submodelo GRID depende do preenchimento do campo data do submodelo FIELD
oModel:AddRules( 'ZA2DETAIL', 'ZA2_AUTOR', 'ZA1MASTER', 'ZA1_DATA', 3)
GetDependency

Sintaxe
FWFORMMODEL():GetDependency([ cId ])-> aModels

Descrição
Fornece a relacao de modelos que são dependentes (filhos) do modelo ou de um submodelo

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cId Caracteres Identificador do modelo de proprietário, caso não


seja passado
esse parametro o método irá retornar os filhos do
modelo

Retorno
aModels Estrutura
[n][1] Tipo do objeto FIELD ou GRID
[n][2] Id do objeto
[n][3] Objeto do modelo (FWFormFieldModel ou FWFormGridModel)
[n][4] Array com a estrutura dos filhos no mesmo formato
GetModelStruct

Sintaxe
FWFORMMODEL():GetModelStruct([ cId ])-> aModels

Descrição
Fornece a Estrutura do modelo ou de um submodelo

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 13/39
12/01/2018 Exibir origem

cId Caracteres Identificador do modelo ou de um submodelo

Retorno
aModels Estrutura
[n][1] Tipo do objeto FIELD ou GRID
[n][2] Id do objeto
[n][3] Objeto do modelo (FWFormFieldModel ou FWFormGridModel)
[n][4] Array com a estrutura dos filhos no mesmo formato
GetModel

Sintaxe
FWFORMMODEL():GetModel([ cId ])-> oRetorno

Descrição
Localiza o submodelo referente ao ID passado por parametro e retorna,
o objeto do submodelo, podendo ser do tipo FWFormFieldsModel ou
FWFormGridModel

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cId Caracteres Id do objeto. Se não informado será retornado o


próprio model.

Retorno
oRetorno Objeto do submodelo(FWFormFieldsModel ou
FWFormGridModel). Se o cID for vazio, retorna o próprio model.
GetXMLData

Sintaxe
FWFORMMODEL():GetXMLData([ lDetail ], [ nOperation ], [ lXSL ], [ lVirtual ], [ lDeleted ], [ lEmpty ], [ lDefinition ], [
cXMLFile ])-> cXML

Descrição
Fornece uma string com os dados do modelo no formato XML, conforme o modo de operação especificado (
SetOperation ) e
se o objeto esta ativado ( Activate ) ou não (deactivate). Quando o objeto esta desativado ou a operação é de inclusão
uma folha de dados em branco é fornecida.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lDetail Lógico Indica se o xml gerado deve incluir .F.


as tags de detalhamento dos dados.
Aconselha-se a evitar o
detalhamento
dos dados, uma vez que eles estão
contido no Schema do XML (
GetXMLSchema ).

nOperation Numérico Indica a operação que será indicada ::NOPERATION


na exportação do XML

lXSL Lógico Informe se o layout deve ser gerado .F.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 14/39
12/01/2018 Exibir origem

lVirtual Lógico Indica se os campos virtuais devem .T.


estar contidos no xml gerado

lDeleted Lógico Indica se as linhas deletadas dos .T.


grids devem estar contidas no xml
gerado

lEmpty Lógico Indica se gera xml com campos nao .F.


obrigatorios vazios (utilizado na
geracao do XSLT)

lDefinition Lógico Indica se gera xml com a definicao .T.


(tratamento para o E4X do javascript
utilizado no BPM)

cXMLFile Caracteres Nome do arquivo XML a ser gerado ""


com path (default StartPath). Se este
parametro for informado a geracao
sera em arquivo automaticamente

Retorno
cXML XML com do modelo e os dados

Veja também
SetOperation,GetXMLSchema
GetJSONData

Sintaxe
FWFORMMODEL():GetJSONData([ lDetail ], [ nOperation ], [ lVirtual ], [ lDeleted ], [ lEmpty ])-> cJson

Descrição
Fornece uma string JSON de dados do modelo, conforme o modo de operação especificado ( SetOperation ) e
se o objeto esta ativado ( Activate ) ou não (deactivate). Quando o objeto esta desativado ou a operação é de inclusão
uma folha de dados em branco é fornecida.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lDetail Lógico Indica se deve incluir as tags de .F.


detalhamento dos dados

nOperation Numérico Indica a operação que será indicada ::NOPERATION


na exportação

lVirtual Lógico Indica se os campos virtuais devem .T.


estar contidos

lDeleted Lógico Indica se as linhas deletadas dos .T.


grids devem estar contidas

lEmpty Lógico Indica se gera com campos nao .F.


obrigatorios vazios

Retorno
cJson JSON com o modelo e os dados

Veja também
SetOperation

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 15/39
12/01/2018 Exibir origem

GetXMLSchema

Sintaxe
FWFORMMODEL():GetXMLSchema([ lVirtual ], [ lTypeDef ], [ lOnlyStruct ])-> cXSD

Descrição
Fornece uma string com o schema ( XSD ) do modelo de dados. Este método fornece a descrição dos elementos do
XML, as
validações em lista, as validações de tamanho e tipo de dados e os campos de preenchimento obrigatório.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lVirtual Lógico Informa se os campos virtuais devem ser .T.


adicionados no schema

lTypeDef Lógico Informa se a definição dos campos devem ser .T.


adicionadas. Isto é importante quando o arquivo é
gerado com mais de um modelo.

lOnlyStruct Lógico Informa se somente a estrutura do schema deve .F.


ser gerada. Neste caso, os campos obrigatório
não são exportados

Retorno
cXSD Schema ( XSD ) do modelo de dados

Veja também
GetXMLData
GetXMLLayout

Sintaxe
FWFORMMODEL():GetXMLLayout([ cID ])-> cXSL

Descrição
Fornece uma string com o layout ( XSL ) de apresentação do modelo de dados. Este método fornece o
layout de exibição dos elementos do XML.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cID Caracteres Identificação dos dados do layout X

Retorno
cXSL Layout de apresentação do modelo de dados

Veja também
GetXMLData
LoadXMLPk

Sintaxe
FWFORMMODEL():LoadXMLPk([ cXML ])-> aResult

Descrição

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 16/39
12/01/2018 Exibir origem

Identifica a chave primária do modelo de dados. Este método pode ser utilizado para identificar e extrair os dados da
chave primária contidas no XML fornecido como parametro.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cXML Caracteres XML com os dados do modelo X

Retorno
aResult Array com a seguinte estrutura:
[1] ExpN: Codigo da Operacao
[2] Array com os dados da Primary Key

Veja também
GetXMLSchema, GetXMLData
LoadXMLOperation

Sintaxe
FWFORMMODEL():LoadXMLOperation([ cXML ])-> nResult

Descrição
Identifica a operacao do modelo de dados. Este método pode ser utilizado para identificar e extrair operacao
contida no XML fornecido como parametro.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cXML Caracteres XML com os dados do modelo X

Retorno
nResult Numero da operacao

Veja também
GetXMLSchema, GetXMLData
LoadXMLData

Sintaxe
FWFORMMODEL():LoadXMLData([ cXML ], [ lForce ])-> lLoad

Descrição
Carrega o modelo com base na folha de dados em XML. Este método pode ser utilizado para processar a validação e
carga
dos dados contidos no XML fornecido, porém não efetua a gravação dos dados

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cXML Caracteres XML com do modelo e os dados X

lForce Lógico Força a carga dos dados sem validar o modelo. .F.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 17/39
12/01/2018 Exibir origem

Retorno
lLoad Indica se o modelo foi carregado com sucesso

Exemplo

::MODELXML := oModel:LoadXMLData(::ModelXML)
If oModel:VldData()
oModel:CommitData()
::lOk := .T.
Else
::lOk := .F.
aError := oModel:GetErrorMessage()
SetSoapFault(aError[MODEL_MSGERR_IDFORM]+":"+;
aError[MODEL_MSGERR_IDFIELD]+":"+;
aError[MODEL_MSGERR_IDFORMERR]+":"+;
aError[MODEL_MSGERR_IDFIELDERR]+":"+;
aError[MODEL_MSGERR_ID],;
aError[MODEL_MSGERR_MESSAGE]+"/"+aError[MODEL_MSGERR_SOLUCTION])
lRetorno := .F.
EndIf
SetLoadXML

Sintaxe
FWFORMMODEL():SetLoadXML([ bLoadXML ])-> NIL

Descrição
Configura o modelo para ser ativado com uma folha de dados em XML.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

bLoadXML Bloco de Bloco de código que recebe o modelo por X


Código parametro e
espera como retorno um XML com os dados
baseado no modelo

SetValue

Sintaxe
FWFORMMODEL():SetValue([ cIdForm ], [ cIdField ], [ xValue ])-> lRetorno

Descrição
Atribui um valor a folha de dados do objeto executando sua validação conforme o tipo de operação configurado (
SetOperation ).
Caso o objeto não possa receber dados um erro pode ser gerado ( SetErrorMessage ) ou uma exceção de usuário (
queda do sistema ).

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo do Modelo que terá uma X


atribuicao

cIdField Caracteres Codigo/Nome do atributo da folha de dados X

xValue Qualquer Valor a ser atribuido X


http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 18/39
12/01/2018 Exibir origem

Retorno
lRetorno Indica se o valor foi atribuido

Veja também
CanSetValue,GetErrorMessage,SetErrorMessage
LoadValue

Sintaxe
FWFORMMODEL():LoadValue([ cIdForm ], [ cIdField ], [ xValue ])-> lRetorno

Descrição
Carrega um valor a folha de dados do objeto. Este metodo somente pode ser utilizado quando há SetValue na pilha de
chamadas
de função ( CallStack ). Diferentemente do metodo SetValue, este método não executa a validação do campo, mas
fornece
todas as indicações de que ele foi atualizado. Ele é muito utíl quando dentro de uma validação de campo,
necessitamos
alterar valores de outros campos, sem que isto implique em valida-los.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo do Modelo que terá uma X


atribuicao

cIdField Caracteres Codigo/Nome do atributo da folha de dados X

xValue Qualquer Valor a ser atribuido X

Retorno
lRetorno Indica se o valor foi carregado
VldData

Sintaxe
FWFORMMODEL():VldData([ cIDModel ], [ lVldOwner ])-> lRetorno

Descrição
Valida toda a folha de dados do objeto modelo, ou um sub-parte dela, assegurando que o mesmo possa ser gravado
com toda a integridade de
dados garantida. Este método verifica se todos os elementos da estrutura do modelo estão validos e executa o code-
block
de pos-validação de cada um deles, bem como o code-block de validação final do modelo. O objeto é considerado
valido
se todas as validações retornarem verdadeiro, caso contrário um erro ( SetErrorMessage ) será gerado.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIDModel Caracteres ID inicial que se deve fazer a validação, no ""


caso que se queira validar uma parte do
model, passando esse
parametro o metodo ira validar o modelo
passado e seus filhos, e não irá setar o
modelo geral como validado.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 19/39
12/01/2018 Exibir origem

lVldOwner Lógico Verifica se será validado o ID do model e seus .T. X


filhos (.T.) ou se será validado apenas o
contexto do ID (.F.)

Retorno
lRetorno Folha de dados valida

Veja também
SetErrorMessage, GetErrorMessage
CommitData

Sintaxe
FWFORMMODEL():CommitData()-> lRetorno

Descrição
Grava a folha de dados do objeto modelo. A gravação somente é permitida se o objeto do modelo está valido.
A gravação não é feita diretamente por esta classe, mas sim, pelo code-block informado no método new. Este método
apenas assegura que todos os procedimentos necessários para gravar os dados do objeto modelo foram cumpridos.

Retorno
lRetorno Folha de dados gravada

Veja também
new
CancelData

Sintaxe
FWFORMMODEL():CancelData()-> lRetorno

Descrição
Cancela a folha de dados do objeto modelo. Da mesma forma como o método CommitData, este método apenas
assegura que
todos os procedimentos necessários ao cancelamento da gravação do objeto modelo foram cumpridos e invoca o
code-block
configurado no método new.

Retorno
lRetorno Folha de dados cancelada

Veja também
new
SetErrorMessage

Sintaxe
FWFORMMODEL():SetErrorMessage([ cIdForm ], [ cIdField ], [ cIdFormErr ], [ cIdFieldErr ], [ cId ], [ cMessage ], [
cSoluction ], [ xValue ], [ xOldValue ])-> lRetorno

Descrição
Atribui uma mensagem de erro ao modelo. Quando uma mensagem de erro é atribuida, ela somente pode ser retirada
pelo
evento que a provocou.
O controle de mensagens de erro do modelo, permite identificar o Id´s do submodelo e campo de origem do erro e
qual
Id do subdmodelo e campo que provocou o erro. Isto significa que caso um erro seja gerado por um gatilho de campo
este possa ser identificado.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 20/39
12/01/2018 Exibir origem

cIdForm Caracteres Id do subdmodelo em validação

cIdField Caracteres Id do campo do submodelo em validação

cIdFormErr Caracteres Id do submodelo em que ocorreu o erro

cIdFieldErr Caracteres Id do campo do submodelo em que ocorreu o


erro

cId Caracteres Id da mensagem de help

cMessage Caracteres Mensagem de erro

cSoluction Caracteres Mensagem de solução

xValue Qualquer Valor especificado do campo

xOldValue Qualquer Valor anterior do campo

Retorno
lRetorno indica que a mensagem de erro foi reinicializada
GetErrorMessage

Sintaxe
FWFORMMODEL():GetErrorMessage([ lClear ])-> aErrorMessage

Descrição
Fornece uma estrutrura com a pilha de erro

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lClear Lógico Indica se a mensagem de erro deve ser limpa apos o .F.
retorno

Retorno
aErrorMessage Array com a estrutura a seguinte estrutura para tratamento de erro
[1] ExpC: Id do submodelo de origem
[2] ExpC: Id do campo de origem
[3] ExpC: Id do submodelo de erro
[4] ExpC: Id do campo de erro
[5] ExpC: Id do erro
[6] ExpC: mensagem do erro
[7] ExpC: mensagem da solução
[8] ExpX: Valor atribuido
[9] ExpX: Valor anterior

Veja também
SetErrorMessage
HasErrorMessage

Sintaxe
FWFORMMODEL():HasErrorMessage()-> Se

Descrição
Retorna se o model possui algum erro

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 21/39
12/01/2018 Exibir origem

Retorno
Se .T. o Model possui algum erro pendente.

Veja também
GetErrorMessage
GetValue

Sintaxe
FWFORMMODEL():GetValue([ cIdForm ], [ cIdField ])-> xRetorno

Descrição
Recupera o valor da folha de dados do objeto.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo X

cIdField Caracteres Codigo/Nome do atributo da folha de dados X

Retorno
xRetorno Conteudo do campo

Veja também
SetValue
CanSetValue

Sintaxe
FWFORMMODEL():CanSetValue([ cIdForm ], [ cIdField ])-> lRetorno

Descrição
Valida se é possível atribuir um valor a folha de dados do objeto.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo que terá uma atribuicao X

cIdField Caracteres Codigo/Nome do atributo da folha de dados X

Retorno
lRetorno Indica se o valor pode ser atribuido
SetRelation

Sintaxe
FWFORMMODEL():SetRelation([ cIdForm ], [ aRelation ], [ cOrderBy ])-> NIL

Descrição
Atribui o critério de relacionamento entre os submodelos. A especificação do relacionamento
entre os submodelos de dados do objeto modelo, garante a carga dos dados e a correta atualização das chaves
estrangeiras
durante a execução do método FWCommit.

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 22/39
12/01/2018 Exibir origem

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo do Modelo de destino do X


relacionamento

aRelation Array Estrutura de relacionamento X


[n]
[n][1] ExpC: ID do campo do submodelo origem
[n][2] ExpC: ID do campo do submodelo
destino

cOrderBy Caracteres Ordem de apresentação

Exemplo

Static Function ModelDef()


Local oModel
Local oStruZA1:= FWFormStruct(1,'ZA1')
Local oStruZA2 := FWFormStruct( 1, 'ZA2')

oModel := FWFormModel():New('COMP021',,,{|oModel| commit()},{|oModel| cancel()})


oModel:AddFields('ZA1MASTER',,oStruZA1)
oModel:AddGrid( 'ZA2DETAIL', 'ZA1MASTER', oStruZA2)
oModel:SetRelation( 'ZA2DETAIL', { { 'ZA2_FILIAL', 'xFilial( "ZA2" )' }, { 'ZA2_MUSICA', 'ZA1_MUSICA' } }, ZA2->(
IndexKey( 1 ) ) )
Return oModel

Static Function commit()


Return

Static Function cancel()


Return
GetRelation

Sintaxe
FWFORMMODEL():GetRelation([ cIdForm ])-> aRelation

Descrição
Fornece o critério de relacionamento entre os submodelos

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo de destino do X


relacionamento

Retorno
aRelation Estrutura do relacionamento entre as tabelas.
[1][n][1] IdField do submodelo de destino
[2] IdField ou expressão do submodelo de destino
[2] Ordem de relacionamento no padrão ISAM.

Veja também
SetRelation
SetPrimaryKey

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 23/39
12/01/2018 Exibir origem

Sintaxe
FWFORMMODEL():SetPrimaryKey([ aPK ])-> NIL

Descrição
Atribui a PrimaryKey da entidade Modelo. A primarykey é imprescindivel para a correta operação
das rotinas automáticas, web-services, relatórios, etc... Não é necessário informar uma para
cada submodelo, a Primary Key é definida somente para o primeiro submodelo do tipo FormField.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

aPK Array Array unidimensional com o ID dos campos X

Observações

Se a tabela do submodelo for um metadado e possuir chave primária informada no SX2, não é necessário
fazer uso desse método pois o MVC irá considerar o que está declarado no SX2.
GetPrimaryKey

Sintaxe
FWFORMMODEL():GetPrimaryKey()-> NIL

Descrição
Fornece a Primary Key do modelo de dados

Veja também
SetPrimaryKey
SetOperation

Sintaxe
FWFORMMODEL():SetOperation([ nOperation ])-> NIL

Descrição
Indica ao modelo a operacao de manipulacao de dados que será realizada. A classe utiliza esta informação para
definir como serão inicializadas as informações do modelo.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

nOperation Numérico Indica a operação que será realizada com o X


modelo, sendo:
[1] View
[3] Insert
[4] Update
[5] Delete

GetOperation

Sintaxe
FWFORMMODEL():GetOperation()-> nOperation

Descrição

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 24/39
12/01/2018 Exibir origem

Fornece o tipo de operacao de manipulacao de dados que foi configurado.

Retorno
nOperation Indica a operação que será realizada com o modelo, sendo:
1 - View
3 - Insert
4 - Update
5 - Delete
6 - only Update

Veja também
SetOperation
ReportDef

Sintaxe
FWFORMMODEL():ReportDef([ cPergunte ], [ bImpress ], [ aFields ])-> oReport

Descrição
Fornece um objeto de TReport com as definicoes de impressão do modelo.
O TReport tem as seções e células baseado nos submodelos e estrutura
de dados.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cPergunte Caracteres Id do grupo de perguntas do relatório

bImpress Bloco de Bloco de código do controle de fluxo de


Código impressão. Deve retornar verdadeiro para
imprimir, não recebe nenhum parametro.

aFields Array Informe a lista de campos que deve ser


impressa, no formato
[1] Id do submodelo
[2] Id do campo
[3] Picture
[4] ComboBox

Retorno
oReport Objeto do tipo TReport com as definições de impressão

Exemplo

Static Function ModelDef()


Local oStruZA1 := FWFormStruct( 1, 'ZA1')
Local oStruZA2 := FWFormStruct( 1, 'ZA2')
Local oModel

oModel := MPFormModel():New( 'COMP022M')


oModel:AddFields( 'ZA1MASTER', NIL, oStruZA1 )
oModel:AddGrid( 'ZA2DETAIL', 'ZA1MASTER', oStruZA2)
oModel:SetRelation( 'ZA2DETAIL', { { 'ZA2_FILIAL', 'xFilial( "ZA2" ) ' } , { 'ZA2_MUSICA', 'ZA1_MUSICA' } } , ZA2->(
IndexKey( 1 ) ) )
Return oModel

Static Function ViewDef()


Local oModel := ModelDef()
Local oView
Local oStr1:= FWFormStruct(2, 'ZA1')
Local oStr2:= FWFormStruct(2, 'ZA2')
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 25/39
12/01/2018 Exibir origem

oView := FWFormView():New()
oView:SetModel( oModel )
oView:AddField('ZA1MASTER' , oStr1)
oView:AddGrid('ZA2DETAIL' , oStr2)
oView:CreateHorizontalBox( 'BOXFORM2', 50)
oView:CreateHorizontalBox( 'BOXFORM4', 50)
oView:SetOwnerView('ZA1MASTER','BOXFORM2')
oView:SetOwnerView('ZA2DETAIL','BOXFORM4')

oView:AddUserButton("Imprimir TReport","",{|oView| print(oView)})

Return oView

Static Function Print(oView)


Local oModel := oView:GetModel()
Local oReport

oReport := oModel:ReportDef()
oReport:PrintDialog()

Return
SetReportTotal

Sintaxe
FWFORMMODEL():SetReportTotal([ lTotal ])-> NIL

Descrição
Configura se o relatório gerado pelo metodo ReportDef deverá totalizar todos os campos numéricos.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lTotal Lógico Se verdadeiro o relatório deve ter totalização. .T.

GetModelIds

Sintaxe
FWFORMMODEL():GetModelIds()-> aArray

Descrição
Fornece um Array com os ids de Todos os submodelos do Model

Retorno
aArray Array unidimensional que contém os Ids do submodelos
SetActivate

Sintaxe
FWFORMMODEL():SetActivate([ bBloco ])-> NIL

Descrição
Seta um bloco que será chamado logo após o Activate do model. Esse bloco recebe como parametro o proprio
model(FWFormModel).

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 26/39
12/01/2018 Exibir origem

bBloco Bloco de Código Code-Block a ser chamado

Exemplo

bBloco := {|oModel| MinhaFunc(oModel)}


oModel:SetActivate(bBloco)

SetDeActivate

Sintaxe
FWFORMMODEL():SetDeActivate([ bBloco ])-> NIL

Descrição
Seta um bloco que será chamado logo após o DeActivate do model. Esse bloco recebe como parametro o proprio
model.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

bBloco Bloco de Código Code-Block a ser chamado

Exemplo

bBloco := {|oModel| MinhaFunc(oModel)}


oModel:SetDeActivate(bBloco)
SetVldActivate

Sintaxe
FWFORMMODEL():SetVldActivate([ bBloco ])-> NIL

Descrição
Seta um bloco que será chamado antes do Activate do model. Ele pode
Ser utilizado para inibir a inicialização do model. Se o retorno for negativo
uma exceção de usuário será gerada. O code-block recebe como parametro
o objeto model.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

bBloco Bloco de Código Code-Block a ser chamado X

Exemplo

bBloco := {|oModel| MinhaFunc(oModel)}


oModel:SetVldActivate(bBloco)

Veja também
CanActivate
CanActivate

Sintaxe
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 27/39
12/01/2018 Exibir origem

FWFORMMODEL():CanActivate()-> NIL

Descrição
Verifica se o model pode ser ativado.

Veja também
SetVldActivate
SetOptional

Sintaxe
FWFORMMODEL():SetOptional([ cIdForm ], [ lOp ])-> NIL

Descrição
Define que um submodelo é opcional. Quando um modelo é opcional ele tem seu preenchimento
não obrigatório, podendo realizar a gravação dos dados sem preenche-lo

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo X

lOp Lógico Valor verdadeiro para deixar o submodelo X


opcional

IsOptional

Sintaxe
FWFORMMODEL():IsOptional([ cIdForm ])-> lOp

Descrição
Retorna se o submodelo é opcional

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Identificador do submodelo X

Retorno
lOp Se verdadeiro o submodelo é opcional
SetOnlyQuery

Sintaxe
FWFORMMODEL():SetOnlyQuery([ cIdForm ], [ lOp ])-> NIL

Descrição
Define que o submodelo não será gravado, ele é apenas usado para consulta.
Se um submodelo é onlyquery e possui submodelos abaixo dele, os filhos serão
gravaveis por padrão. Mesmo o pai sendo onlyquery, os filhos irão
fazer a gravação, exceto se o(s) submodelo(s) filho for definido como
setonlyquery verdadeiro.

Parâmetros

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 28/39
12/01/2018 Exibir origem

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo X

lOp Lógico Se verdadeiro faz com que o submodelo não X


seja gravado.

IsOnlyQuery

Sintaxe
FWFORMMODEL():IsOnlyQuery([ cIdForm ])-> lRet

Descrição
Retorna se o submodelo é apenas para visualização, ou seja, tem a gravação é inibida.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Codigo do submodelo X

Retorno
lRet Se verdadeiro o submodelo não é gravado
ClearField

Sintaxe
FWFORMMODEL():ClearField([ cIdForm ], [ cIdField ])-> lRetorno

Descrição
Limpa o conteudo de um campo de um submodelo

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Identificação do submodelo X

cIdField Caracteres Codigo/Nome do atributo da folha de dados X

Retorno
lRetorno Indica se a operação foi concluida com sucesso
IsActive

Sintaxe
FWFORMMODEL():IsActive()-> NIL

Descrição
Retorna se o modelo está ativo

isEnable

Sintaxe
FWFORMMODEL():isEnable([ cIdForm ])-> lRet
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 29/39
12/01/2018 Exibir origem

Descrição
Execulta o bloco de bPre do submodelo, retornando se ele está disponivel para edição

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Identificador do submodelo que será analisado X

Retorno
lRet - Se verdadeiro indica que o submodelo está disponivel
InitValue

Sintaxe
FWFORMMODEL():InitValue([ cIdForm ], [ cIdField ])-> xRetorno

Descrição
Recupera o valor do inicializador padrao da folha de dados do objeto.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Identificador do Submodelo X

cIdField Caracteres Codigo/Nome do atributo da folha de dados X

Retorno
xRetorno Conteudo do campo
Compare

Sintaxe
FWFORMMODEL():Compare([ oOtherModel ])-> NIL

Descrição
Faz a comparação entre os dados de um objeto do tipo Model passado por referência
com o próprio model. Os dois objetos devem possuir os mesmos submodelos, pois esse
método compara apenas os dados, supondo que a estrutura seja a mesma.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

oOtherModel Objeto objeto do tipo FWFormModel ou MPFormModel X

HasField

Sintaxe
FWFORMMODEL():HasField([ cIdForm ], [ cIdField ])-> NIL

Descrição
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 30/39
12/01/2018 Exibir origem

Informa de um determinado campo existe na estrutura

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cIdForm Caracteres Identificador do submodelo X

cIdField Caracteres Identificador do campo X

SetCancel

Sintaxe
FWFORMMODEL():SetCancel([ bBloco ], [ lAcumula ])-> NIL

Descrição
Seta um bloco que será chamado quando o submodelo é cancelado

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

bBloco Bloco de Code-Block a ser chamado X


Código

lAcumula Lógico Se verdadeiro não substitui o bloco de .F.


cancelamento anterior
e sim adiciona a validação no final

SetCommit

Sintaxe
FWFORMMODEL():SetCommit([ bBloco ], [ lAcumula ])-> NIL

Descrição
Seta um bloco que será chamado na gravação do submodelo

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

bBloco Bloco de Code-Block a ser chamado X


Código

lAcumula Lógico Se verdadeiro não substitui o bloco anterior .F.


e sim
adiciona a validação no final

SetOnDemand

Sintaxe
FWFORMMODEL():SetOnDemand([ lOnDemand ])-> NIL

Descrição
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 31/39
12/01/2018 Exibir origem

Define se a carga dos dados será por demanda.


Quando o model é por demanda, os dados do submodelo não serão carregados
de uma vez no activate. Conforme eles forem manipulados eles serão
carregados. O método é útil em modelos que contem muitos submodelos
e que podem ficar lentos devido a grande quantidade de dados.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

lOnDemand Lógico Se verdadeiro a carga será por demanda .T.

IsCopy

Sintaxe
FWFORMMODEL():IsCopy()-> lRetorno

Descrição
Indica se o modelo esta em uma operacao com origem em uma copia de dados

Retorno
lRetorno Se verdadeiro indica que é uma operação de cópia
SetProcess

Sintaxe
FWFORMMODEL():SetProcess([ nProcess ])-> NIL

Descrição
Define um valor para o processo. Util para se efetuar algum controle alem
da operação.

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

nProcess Numérico Valor a ser atribuido ao processo X

Veja também
GetProcess
GetProcess

Sintaxe
FWFORMMODEL():GetProcess()-> NIL

Descrição
Obtem o valor do processo que foi definido pelo método SetProcess

Veja também
SetProcess
InstallObserver

Sintaxe
FWFORMMODEL():InstallObserver([ cPoint ], [ oObserver ])-> NIL

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 32/39
12/01/2018 Exibir origem

Descrição
Faz a instalaçao de um Observador em uma ação

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cPoint Caracteres ID do local, ids disponíves X


"COMMIT"

oObserver Objeto Objeto que precisa derivar da classe X


FWObserver

Veja também

FWObserver
getObservable

Sintaxe
FWFORMMODEL():getObservable([ cPoint ])-> oObserable

Descrição
Retorna um Observable baseado numa ação

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cPoint Caracteres ID do local, ids disponíves X


"COMMIT"

Retorno
oObserable Objeto do tipo FWObserable

Veja também

FWObservable
SetWKDef

Sintaxe
FWFORMMODEL():SetWKDef([ cWKDef ])-> NIL

Descrição
Define o Código do processo do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKDef Caracteres Código do processo X

SetWKVersDef
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 33/39
12/01/2018 Exibir origem

Sintaxe
FWFORMMODEL():SetWKVersDef([ cWKVersDef ])-> NIL

Descrição
Define a versão do processo do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKVersDef Caracteres Versão do processo X

SetWKNumProces

Sintaxe
FWFORMMODEL():SetWKNumProces([ cWKNumProces ])-> NIL

Descrição
Define o Número da solicitação de processo do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKNumProces Caracteres Número da solicitação de processo X

SetWKNumState

Sintaxe
FWFORMMODEL():SetWKNumState([ cWKNumState ])-> NIL

Descrição
Define o Número da atividade do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKNumState Caracteres Número da atividade X

SetWKCurrentState

Sintaxe
FWFORMMODEL():SetWKCurrentState([ cWKCurrentState ])-> NIL

Descrição
Define o Número da atividade atual do processo do Fluig BPM

Parâmetros

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 34/39
12/01/2018 Exibir origem

Nome Tipo Descrição Default Obrigatório Referência

cWKCurrentState Caracteres Número da atividade atual X

SetWKCompany

Sintaxe
FWFORMMODEL():SetWKCompany([ cWKCompany ])-> NIL

Descrição
Define o número da empresado Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKCompany Caracteres Número da empresa X

SetWKUser

Sintaxe
FWFORMMODEL():SetWKUser([ cWKUser ])-> NIL

Descrição
Define o Código do usuario do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKUser Caracteres Código do usuario X

SetWKUserEmail

Sintaxe
FWFORMMODEL():SetWKUserEmail([ cWKUserEmail ])-> NIL

Descrição
Define o e-mail do usuario do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKUserEmail Caracteres E-mail do usuario X

SetWKCompletTask

Sintaxe
FWFORMMODEL():SetWKCompletTask([ cWKCompletTask ])-> NIL

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 35/39
12/01/2018 Exibir origem

Descrição
Indica se tarefa foi completada (true/false) do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKCompletTask Caracteres true/false X

SetWKNextState

Sintaxe
FWFORMMODEL():SetWKNextState([ cWKNextState ])-> NIL

Descrição
Define o Número da próxima atividade (destino) do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKNextState Caracteres Número da atividade X

SetWKCardId

Sintaxe
FWFORMMODEL():SetWKCardId([ cWKCardId ])-> NIL

Descrição
Define o código do formulário do processo do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKCardId Caracteres Código do formulário X

SetWKFormId

Sintaxe
FWFORMMODEL():SetWKFormId([ cWKFormId ])-> NIL

Descrição
Define o Código da definição de formulário do processo do Fluig BPM

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

cWKFormId Caracteres Código da definição de formulário X

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 36/39
12/01/2018 Exibir origem

GetWKDef

Sintaxe
FWFORMMODEL():GetWKDef()-> cWKDef

Descrição
Retorna o Código do processo do Fluig BPM

Retorno
cWKDef Código do processo
GetWKVersDef

Sintaxe
FWFORMMODEL():GetWKVersDef()-> cWKVersDef

Descrição
Retorna o Versão do processo do Fluig BPM

Retorno
cWKVersDef Versão do processo
GetWKNumProces

Sintaxe
FWFORMMODEL():GetWKNumProces()-> cWKNumProces

Descrição
Retorna o Número da solicitação de processo do Fluig BPM

Retorno
cWKNumProces Número da solicitação de processo
GetWKNumState

Sintaxe
FWFORMMODEL():GetWKNumState()-> cWKNumState

Descrição
Retorna o Número da atividade do Fluig BPM

Retorno
cWKNumState Número da atividade
GetWKCurrentState

Sintaxe
FWFORMMODEL():GetWKCurrentState()-> cWKCurrentState

Descrição
Retorna o Número da atividade atual do processo do Fluig BPM

Retorno
cWKCurrentState Número da atividade
GetWKCompany

Sintaxe
FWFORMMODEL():GetWKCompany()-> cWKCompany

Descrição

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 37/39
12/01/2018 Exibir origem

Retorna o Número da empresa do processo do Fluig BPM

Retorno
cWKCompany Número empresa
GetWKUser

Sintaxe
FWFORMMODEL():GetWKUser()-> cWKUser

Descrição
Retorna o Código do usuario do Fluig BPM

Retorno
cWKUser Código do usuario
GetWKUserEmail

Sintaxe
FWFORMMODEL():GetWKUserEmail()-> cWKUserEmail

Descrição
Retorna o e-mail do usuario do Fluig BPM

Retorno
cWKUserEmail E-mail do usuario
GetWKCompletTask

Sintaxe
FWFORMMODEL():GetWKCompletTask()-> cWKCompletTask

Descrição
Retorna se tarefa foi concluída do Fluig BPM

Retorno
cWKCompletTask true/false
GetWKNextState

Sintaxe
FWFORMMODEL():GetWKNextState()-> cWKNextState

Descrição
Retorna o Número da próxima atividade (destino) do processo do Fluig BPM

Retorno
cWKNextState Número da atividade
GetWKCardId

Sintaxe
FWFORMMODEL():GetWKCardId()-> cWKCardId

Descrição
Retorna o código do formulário do processo do Fluig BPM

Retorno
cWKCardId Código do formulário
GetWKFormId

Sintaxe
FWFORMMODEL():GetWKFormId()-> cWKFormId

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 38/39
12/01/2018 Exibir origem

Descrição
Retorna o Código da definição de formulário do processo do Fluig BPM

Retorno
cWKFormId Código da definição de formulário
SetPKIndexOrder

Sintaxe
FWFORMMODEL():SetPKIndexOrder([ nIndexOrder ])-> NIL

Descrição
Define a ordem de indice utilizada pela PK do model

Parâmetros

Nome Tipo Descrição Default Obrigatório Referência

nIndexOrder Numérico Ordem X

http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194 39/39

Potrebbero piacerti anche