No artigo de hoje vamos mostrar como desativar a alteração de campos da grid de Solicitação de Compras via ponto de entrada.
Um aluno recentemente nos perguntou se seria possível desativar alguns campos da grid de Solicitação de Compras (MATA110), sem alterar o Modo De Edição via Configurador e somente para alguns usuários.
Pensado nisso, elaboramos a seguinte lógica para esse exemplo:
- Vamos validar no ParamIxb desse ponto de entrada MA110TEL, se é uma Alteração
- E se o usuário logado estiver contido em um parâmetro
- Será feito um laço de repetição na variável aHeader que tem as definições das colunas
- Se for alguma das colunas que queremos bloquear, vamos alterar a posição do array relacionada à validação de campo, forçando .F. para que o usuário não consiga alterar o valor
Abaixo então como ficou o código fonte:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} MT110TEL Ponto de entrada que manipula a tela de solicitação de compras @type user function @author Atilio @since 17/06/2025 @see https://tdn.totvs.com/pages/releaseview.action?pageId=6085447 /*/ User Function MT110TEL() Local aArea := FWGetArea() Local nOpc := PARAMIXB[3] Local cUsrLogad := RetCodUsr() Local cUsrPodem := SuperGetMV("MV_X_USALT", .F., "000005;000006;000011;") Local nAtual := 0 Local cCampo := "" //Se for alteração If nOpc == 4 //Se o usuário logado NÃO estiver na lista dos que podem alterar If ! cUsrLogad $ cUsrPodem //Percorre todos os campos da grid For nAtual := 1 To Len(aHeader) cCampo := Alltrim(aHeader[nAtual][02]) //Se for o campo de Quantidade, Preço ou Observação If cCampo + ";" $ "C1_QUANT;C1_PRECO;C1_OBS;" //Altera a posição para ".F." para que force a validação para não permitir digitação aHeader[nAtual][06] := ".F." EndIf Next EndIf EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.