Sintaxe

FWModelActive()-> oSet


Descrição

Retorna a referência ao último modelo utilizado. O modelo pode estar ativo ou não. Deve-se fazer guardas do mesmo.
Exemplo:

oModel := FWModelActive()
If oModel:isActive()
Endif


Retorno
oSet Objeto do tipo Model ativo


Observações
A partir da LIB 20190319, ao efetuar a destruição ( método destroy ) do modelo ativo, o mesmo limpara a referência presente no retorno na função FWModelActive, portanto a mesma passará a retornar Nil e não mais um modelo destruído, evitando o falso positivo de um modelo válido.
  • No labels

3 Comments

  1. Acredito que deveriam alterar a descrição para "fornece o último objeto da classe FWFormModel que esteve ativo (mesmo após sendo utilizado o 'Destroy()'), para ser utilizado nas regras
    de validação do sistema Microsiga Protheus.".

    Pois do jeito que está hoje permite uma margem muito grande para erros no ERP inteiro!

  2. A descrição mais correta para essa função seria:

    "Esta função fornece o último objeto da classe FWFormModel que esteve ativo, para ser utilizado nas regras de validação do sistema Microsiga Protheus."

    Ainda se se utilize a sequência abaixo:

    oModel:DeActivate()
    oModel:Destroy()
    oModel := Nil

    e após se utilize um

    oModel := FWModelActive()

    o objeto oModel terá uma estrutura e será diferente de NIL ainda que o oModel, tecnicamente, deveria estar inativo.

    Convém, nos casos de funções genéricas onde não se tem o controle de qual model vai estar ativo, a utilização da validação abaixo

    oModel::IsActive()
    para a utilização do mesmo.




  3. Unknown User (norbertom)

    Olá bom dia!


    Na verdade ele retorna uma referência à última instância criada independente desta estar ativa e independente também de ter sido executado o método Destroy().

    Aliás, por recomendação da Equipe do Frame, seria uma boa prática efetuar o seguinte tratamento:

    oModel := FWModelActive()

    If oModel:IsActive()

    ...

    EndIf