Boa tarde! Estou tentando bloquear o a alteração do campo C7_PRECO quando o campo C7_CODTAB estiver preenchido . Isso no pedido de compras. Eu fiz como a imagem em anexo. porém o campo continua editável.
Boa tarde! Estou tentando bloquear o a alteração do campo C7_PRECO quando o campo C7_CODTAB estiver preenchido . Isso no pedido de compras. Eu fiz como a imagem em anexo. porém o campo continua editável.
Arruma a chamada para um fonte customizado e faça a validação dentro dentro retornando um boolean ou dentro do cfg mesmo. Ex:
User Function VCOM006() Local aArea := GetArea() Local _lRet := .F. Local _xCampo := GdFieldGet( "C7_CODTAB", n )
If !Empty( _xCampo )
_lRet := .F.
Else
_lRet := .T.
EndIf
RestArea( aArea ) Return( _lRet )
Boa tarde Arthur,
A função Empty já retorna um tipo boolean, então não precisa colocar o IIF, apenas negar o seu retorno conforme necessidade, dessa forma o código fica mais limpo e objetivo.
Tente colocar apenas Empty(M->C7_CODTAB) e faça o teste preenchendo o campo C7_CODTAB, assim como o teste inverso, deixando o mesmo em branco, caso não bloquear em nenhum dos casos, significa que o alias em memória (M->) não está sendo preenchido ou a rotina não respeitou o valor do X3_WHEN.
Boa tarde Daniel! Fiz o processo e não deu certo. Acredito que seja como você informou, que a rotina não respeitou a X3_WHEN. Você saberia outra maneira de resolver este problema?
— Arthur Morgan 24 de Jul de 2019Você pode tentar utilizar o valid ou utilizar de algum ponto de entrada para a validação da linha ou do formulário, como o MT120LOK: http://tdn.totvs.com/pages/viewpage.action?pageId=6085481
— Daniel Mendes 24 de Jul de 2019Bom dia!
Já faz tempo, mas se ainda precisar colocar a informação no X3_WHEN sem precisar usar um fonte customizado, você pode tentar desta forma:
!Empty(GdFieldGet("C7_CODTAB"))
Fiz algo semelhante na C6_QTDVEN e funcionou perfeitamente.