Ponto de entrada no CRMA980

Galera, tenho uma necessidade específica de bloquear 270 campos no cadastro do cliente no Prothues. Então usei o IDPONTO "MODELVLDACTIVE"


If cIDPonto == 'MODELVLDACTIVE'
    aGrpUsr := UsrRetGrp(cUserName,__cUserID)
    If aScan(aGrpUsr,{|x| x == "000002"}) > 0
        aCmpBLOK := {'A1_EMAIL','A1_IBGE'}
        For _cv := 1 To Len(aCmpBLOK)
            oObj:GetModel("SA1MASTER"):GetStruct():SetProperty(aCmpBLOK[_cv], MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN , ".F."))
        Next
    EndIf
EndIf

Claro que para efeito de melhor visualização eu deixei o array com dois itens apenas, mas são 270 campos. Quando a tela do cadastro de vendedor é aberta funciona corretamente, os campos são bloqueados apenas para os usuários pertencentes ao grupo 000002 só que estranhamente gera uma enorme lentidão ao mudar de campo dentro da tela. Assim que eu digito qualquer coisa dentro de um campo, ao dar TAB o cursor é levado para o proximo campo editável, mas não liberar para digitar eu tenho que aguardar uns 5 segundos aproximadamente até que o cursor é liberdo para eu digitar. tipo congela sabe.. O que mais me intriga é que esse trecho não é mais acionado, mas sei que se deixar por exemplo essa matriz contendo apenas esses dois itens essa lentidão não irá acontecer pois já realizei esse teste. Alguma idéia de como contornar?

Homero, tente ao invés de bloquear todos os 270 campos através de um laço (no seu caso o for), você pode bloquear todos os campos (colocando '*') e liberando apenas os campos que podem ser alterados.

Sobre a lentidão, o PE do MVC tem muitas validações, veja se não está passando em algum outro momento (PRE/POS, etc) que esteja causando essa lentidão.

Também é válido checar se não há nenhum gatilho criado que fica disparando a cada validação.

Se puder, dá um retorno aqui.

Mas neste caso quando vc fala colocar asterisco está se referindo a linha do oObj:GetModel(“SA1MASTER”):GetStruct():SetProperty(aCmpBLOK[_cv], MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN , “.F.”))
Ou seja… deixa-la assim?
oObj:GetModel(“SA1MASTER”):GetStruct():SetProperty(*, MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN , “.F.”))

Realmente colocando o When nos 270 campos o MVC fica lento devido a forma que ele executa esses blocos. Tenta ao invés disso alterar a propriedade MODEL_FIELD_NOUPD para .T., deve impedir as alterações como você precisa.