12/01/2018
Exibir origem
import.css=//attachments/327912/newLayout.css Classe: FWFormModel Compatível Países:
Todos
Sistemas Operacionais:
Todos
Compatível às Bases de Dados:
Todos
Nível de o:
Nível 1 (o 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 ada 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
cID
Caracteres
Identificador do modelo
bPre
Bloco de Código
Bloco de código de pré-validação do modelo. 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.
{|| .T.}
bPost
Bloco de Código
Bloco de código de pós-validação do modelo, 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.
{|| .T.}
bCommit
Bloco de Código
Bloco de código de persistência dos dados, ele é invocado pelo método CommitData. O bloco recebe como parametro o objeto do Model e deve realizar a gravação dos dados.
X
bCancel
Bloco de Código
Bloco de código de cancelamento da edição, ele é invocado pelo método CancelData. O bloco recebe como parametro o objeto do Model.
X
Referência
X
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 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. 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
lCopy
Lógico
Informa se o model deve carregar os dados do registro posicionado em operações de inclusão. Essa opção é usada quando é necessário fazer uma operação de cópia.
.F.
Obrigatório
Referência
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 a 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
cDescription
Caracteres
Descrição do objetivo do modelo
Default
Obrigatório
Referência
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
cId
Caracteres
Identificador do modelo. O Id será 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 FWFormModelStruct.
bPre
Bloco de Código
Bloco de Código de pré-validação do 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 adas 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.
{|| .T.}
bPost
Bloco de Código
Bloco de Código de pós-validação do submodelo, ele é equivalente ao
{|| .T.}
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência
X
""
X
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 Código
Bloco de carga dos dados do submodelo. 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
cId
Caracteres
Identificador do modelo. O Id será solicitado em diversas operações com este submodelo.
X
cOwner
Caracteres
Identificador superior do submodelo. O Owner é o submodelo que se relaciona diretamente com o formgrid.
X
oModelStruct
Objeto
Objeto com a estrutura de dados do tipo FWFormModelStruct.
X
bLinePre
Bloco de Código
Bloco de Código de pre-edição da linha do 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
Default
Obrigatório
Referência
{|| .T.}
7/39
12/01/2018
Exibir origem
- "DELETE" - "SETVALUE" : nesse caso, serão ados 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á ado 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 Código
Bloco de código de pós validação da linha 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.
{|| .T.}
bPre
Bloco de Código
Bloco de Código de pré-validação do 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á ado nada para o parametro de numero de linha - "SETVALUE" : nesse caso, serão ados 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á ado 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.
{|| .T.}
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 Código
Bloco de Código de pós-validação do 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.
{|| .T.}
bLoad
Bloco de Código
Bloco de carga dos dados do submodelo. 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 a 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
cId
Caracteres
Identificador do submodelo. O Id será solicitado em diversas operações.
X
cOwner
Caracteres
Identificador owner do submodelo. Esse ID correponde ao owner do grid usado como base para o submodelo calc.
X
cIdForm
Caracteres
Identificador do submodelo do tipo grid que será a base para os calculos.
X
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência
10/39
12/01/2018
Exibir origem
cIdField
Caracteres
Identificador do campo que será a base do calculo.
X
cIdCalc
Caracteres
Identificador para o campo que será calculado.
X
cOperation
Caracteres
Identificador da operação a ser realizada ( SUM, COUNT, AVG, FORMULA )
bCond
Bloco de Código
Bloco de código referente a condicão para 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 Código
Bloco de codigo para com o valor inicial para o campo calculado. Recebe como parametro o objeto do modelo e deve retornar o valor inicial.
cTitle
Caracteres
Titulo do campo calculado.
bFormula
Bloco de Código
Formula a ser utilizada quando o parametro 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)}
X
nTamanho
Numérico
Tamanho do campo calculado, se nao for informado usa o tamanho do campo base.
X
nDecimal
Numérico
Numero de casas decimais do campo calculado, se nao for informado usa o tamanho do decimal do campo base.
X
"SUM"
CIDCALC
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
cIDSubModel
Caracteres
Identificador do submodelo do campo receptor
X
cIDField
Caracteres
Identificador do campo receptor
X
cIDTargetSubModel
Caracteres
Identificador do submodelo do campo disparador
X
cIDFieldTarget
Caracteres
Identificador do campo disparador
""
nType
Numérico
Identificador da operacao de 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.
3
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência
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
cId
Caracteres
Identificador do modelo de proprietário, caso não seja ado esse parametro o método irá retornar os filhos do modelo
Obrigatório
Referência
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
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência 13/39
12/01/2018
cId
Exibir origem
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 ado por parametro e retorna, o objeto do submodelo, podendo ser do tipo FWFormFieldsModel ou FWFormGridModel Parâmetros Nome
Tipo
Descrição
Default
cId
Caracteres
Id do objeto. Se não informado será retornado o próprio model.
Obrigatório
Referência
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
lDetail
Lógico
Indica se o xml gerado deve incluir 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 ).
.F.
nOperation
Numérico
Indica a operação que será indicada na exportação do XML
::NOPERATION
lXSL
Lógico
Informe se o layout deve ser gerado
.F.
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Obrigatório
Referência
14/39
12/01/2018
Exibir origem
lVirtual
Lógico
Indica se os campos virtuais devem estar contidos no xml gerado
.T.
lDeleted
Lógico
Indica se as linhas deletadas dos grids devem estar contidas no xml gerado
.T.
lEmpty
Lógico
Indica se gera xml com campos nao obrigatorios vazios (utilizado na geracao do XSLT)
.F.
lDefinition
Lógico
Indica se gera xml com a definicao (tratamento para o E4X do javascript utilizado no BPM)
.T.
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
lDetail
Lógico
Indica se deve incluir as tags de detalhamento dos dados
.F.
nOperation
Numérico
Indica a operação que será indicada na exportação
::NOPERATION
lVirtual
Lógico
Indica se os campos virtuais devem estar contidos
.T.
lDeleted
Lógico
Indica se as linhas deletadas dos grids devem estar contidas
.T.
lEmpty
Lógico
Indica se gera com campos nao obrigatorios vazios
.F.
Obrigatório
Referência
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
lVirtual
Lógico
Informa se os campos virtuais devem ser adicionados no schema
.T.
lTypeDef
Lógico
Informa se a definição dos campos devem ser adicionadas. Isto é importante quando o arquivo é gerado com mais de um modelo.
.T.
lOnlyStruct
Lógico
Informa se somente a estrutura do schema deve ser gerada. Neste caso, os campos obrigatório não são exportados
.F.
Obrigatório
Referência
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
cID
Caracteres
Identificação dos dados do layout
Default
Obrigatório
Referência
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
cXML
Caracteres
XML com os dados do modelo
Default
Obrigatório
Referência
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
cXML
Caracteres
XML com os dados do modelo
Default
Obrigatório
Referência
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
cXML
Caracteres
XML com do modelo e os dados
lForce
Lógico
Força a carga dos dados sem validar o modelo.
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência
X .F.
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
bLoadXML
Bloco de Código
Bloco de código que recebe o modelo por parametro e espera como retorno um XML com os dados baseado no modelo
Default
Obrigatório
Referência
X
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
cIdForm
Caracteres
Codigo do submodelo do Modelo que terá uma atribuicao
X
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
Default
Obrigatório
Referência
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
cIdForm
Caracteres
Codigo do submodelo do Modelo que terá uma atribuicao
X
cIdField
Caracteres
Codigo/Nome do atributo da folha de dados
X
xValue
Qualquer
Valor a ser atribuido
X
Referência
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 codeblock 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
cIDModel
Caracteres
ID inicial que se deve fazer a validação, no caso que se queira validar uma parte do model, ando esse parametro o metodo ira validar o modelo ado e seus filhos, e não irá setar o modelo geral como validado.
""
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Obrigatório
Referência
19/39
12/01/2018
lVldOwner
Exibir origem
Lógico
Verifica se será validado o ID do model e seus filhos (.T.) ou se será validado apenas o contexto do ID (.F.)
.T.
X
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
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência 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
lClear
Lógico
Indica se a mensagem de erro deve ser limpa apos o retorno
.F.
Obrigatório
Referência
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
cIdForm
Caracteres
Codigo do submodelo
X
cIdField
Caracteres
Codigo/Nome do atributo da folha de dados
X
Referência
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
cIdForm
Caracteres
Codigo do submodelo que terá uma atribuicao
X
cIdField
Caracteres
Codigo/Nome do atributo da folha de dados
X
Referência
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
cIdForm
Caracteres
Codigo do submodelo do Modelo de destino do relacionamento
X
aRelation
Array
Estrutura de relacionamento [n] [n][1] ExpC: ID do campo do submodelo origem [n][2] ExpC: ID do campo do submodelo destino
X
cOrderBy
Caracteres
Ordem de apresentação
Referência
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
cIdForm
Caracteres
Codigo do submodelo de destino do relacionamento
Default
Obrigatório
Referência
X
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
aPK
Array
Array unidimensional com o ID dos campos
Default
Obrigatório
Referência
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
nOperation
Numérico
Indica a operação que será realizada com o modelo, sendo: [1] View [3] Insert [4] Update [5] Delete
Default
Obrigatório
Referência
X
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([ ergunte ], [ 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
ergunte
Caracteres
Id do grupo de perguntas do relatório
bImpress
Bloco de Código
Bloco de código do controle de fluxo de 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
Default
Obrigatório
Referência
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:AddButton("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
lTotal
Lógico
Se verdadeiro o relatório deve ter totalização.
.T.
Obrigatório
Referência
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
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência 26/39
12/01/2018
bBloco
Exibir origem
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
bBloco
Bloco de Código
Code-Block a ser chamado
Default
Obrigatório
Referência
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
bBloco
Bloco de Código
Code-Block a ser chamado
Default
Obrigatório
Referência
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
cIdForm
Caracteres
Codigo do submodelo
X
lOp
Lógico
Valor verdadeiro para deixar o submodelo opcional
X
Referência
IsOptional Sintaxe FWFORMMODEL():IsOptional([ cIdForm ])-> lOp Descrição Retorna se o submodelo é opcional Parâmetros Nome
Tipo
Descrição
cIdForm
Caracteres
Identificador do submodelo
Default
Obrigatório
Referência
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
cIdForm
Caracteres
Codigo do submodelo
X
lOp
Lógico
Se verdadeiro faz com que o submodelo não seja gravado.
X
Referência
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
cIdForm
Caracteres
Codigo do submodelo
Default
Obrigatório
Referência
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
cIdForm
Caracteres
Identificação do submodelo
X
cIdField
Caracteres
Codigo/Nome do atributo da folha de dados
X
Referência
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
cIdForm
Caracteres
Identificador do submodelo que será analisado
Default
Obrigatório
Referência
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
cIdForm
Caracteres
Identificador do Submodelo
X
cIdField
Caracteres
Codigo/Nome do atributo da folha de dados
X
Referência
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 ado 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
oOtherModel
Objeto
objeto do tipo FWFormModel ou MPFormModel
Default
Obrigatório
Referência
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
cIdForm
Caracteres
Identificador do submodelo
X
cIdField
Caracteres
Identificador do campo
X
Referência
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
bBloco
Bloco de Código
Code-Block a ser chamado
lAcumula
Lógico
Se verdadeiro não substitui o bloco de cancelamento anterior e sim adiciona a validação no final
Default
Obrigatório
Referência
X .F.
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
bBloco
Bloco de Código
Code-Block a ser chamado
lAcumula
Lógico
Se verdadeiro não substitui o bloco anterior e sim adiciona a validação no final
Default
Obrigatório
Referência
X .F.
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
lOnDemand
Lógico
Se verdadeiro a carga será por demanda
.T.
Obrigatório
Referência
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
nProcess
Numérico
Valor a ser atribuido ao processo
Default
Obrigatório
Referência
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([ oint ], [ 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
oint
Caracteres
ID do local, ids disponíves "COMMIT"
X
oObserver
Objeto
Objeto que precisa derivar da classe FWObserver
X
Referência
Veja também FWObserver getObservable Sintaxe FWFORMMODEL():getObservable([ oint ])-> oObserable Descrição Retorna um Observable baseado numa ação Parâmetros Nome
Tipo
Descrição
Default
oint
Caracteres
ID do local, ids disponíves "COMMIT"
Obrigatório
Referência
X
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
cWKDef
Caracteres
Código do processo
Default
Obrigatório
Referência
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
cWKVersDef
Caracteres
Versão do processo
Default
Obrigatório
Referência
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
cWKNumProces
Caracteres
Número da solicitação de processo
Obrigatório
Referência
X
SetWKNumState Sintaxe FWFORMMODEL():SetWKNumState([ cWKNumState ])-> NIL Descrição Define o Número da atividade do Fluig BPM Parâmetros Nome
Tipo
Descrição
cWKNumState
Caracteres
Número da atividade
Default
Obrigatório
Referência
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
cWKCurrentState
Caracteres
Número da atividade atual
Obrigatório
Referência
X
SetWKCompany Sintaxe FWFORMMODEL():SetWKCompany([ cWKCompany ])-> NIL Descrição Define o número da empresado Fluig BPM Parâmetros Nome
Tipo
Descrição
Default
cWKCompany
Caracteres
Número da empresa
Obrigatório
Referência
X
SetWK Sintaxe FWFORMMODEL():SetWK([ cWK ])-> NIL Descrição Define o Código do do Fluig BPM Parâmetros Nome
Tipo
Descrição
cWK
Caracteres
Código do
Default
Obrigatório
Referência
X
SetWKEmail Sintaxe FWFORMMODEL():SetWKEmail([ cWKEmail ])-> NIL Descrição Define o e-mail do do Fluig BPM Parâmetros Nome
Tipo
Descrição
cWKEmail
Caracteres
E-mail do
Default
Obrigatório
Referência
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
cWKCompletTask
Caracteres
true/false
Default
Obrigatório
Referência
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
cWKNextState
Caracteres
Número da atividade
Default
Obrigatório
Referência
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
cWKCardId
Caracteres
Código do formulário
Default
Obrigatório
Referência
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
cWKFormId
Caracteres
Código da definição de formulário
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
Default
Obrigatório
Referência
X
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 GetWK Sintaxe FWFORMMODEL():GetWK()-> cWK Descrição Retorna o Código do do Fluig BPM Retorno cWK Código do GetWKEmail Sintaxe FWFORMMODEL():GetWKEmail()-> cWKEmail Descrição Retorna o e-mail do do Fluig BPM Retorno cWKEmail E-mail do 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
nIndexOrder
Numérico
Ordem
Default
Obrigatório
Referência
X
http://tdn.totvs.com/plugins/viewsource/viewpagesrc.action?pageId=161351194
39/39