Para que serve e como criar um ini. padrão de campo?

Há sempre algumas dúvidas sobre Ini. Padrão e Ini. Browse, no artigo de hoje irei fazer um overview sobre o assunto.

Basicamente, temos duas opções de inicializar um campo no Protheus, a Inicialização Padrão e a Inicialização no Browse. Os alunos sempre me perguntam qual usar, então vou explicar brevemente sobre cada um deles.

Inicialização no Browse: Inicia um valor em um campo do tipo Virtual, no browse de navegação do cadastro

Inicialização Padrão: Inicia um valor em um campo do tipo Real, no momento da inclusão do valor. Ou inicia um valor em um campo do tipo Virtual em qualquer operação feita (inclusão, alteração, visualização, etc).

Inicializador Padrão no Protheus

Então aí que entra a dúvida, se eu criei um campo, coloquei o Inicializador Padrão nele, por qual motivo ele não está “inicializando”? Pois bem jovens, se você criou o campo como Real, ele só será iniciado na inclusão, pois o conteúdo não existe ainda. Então quando você clica em alterar, como o campo já tem o conteúdo salvo (mesmo com espaços em branco), ele não vai inicializar a informação.

Resumindo para usar um Inicializador padrão, você tem dois cenários:

Cenário 1 (usando campo Virtual)

1 – O contexto do campo deve ser Virtual (ou seja, não irá salvar no banco de dados)

2 – Você precisa utilizar alguma função no Ini. Padrão (como um Posicione)

* Irá funcionar em qualquer operação (inclusão, alteração, visualização, etc)

Cenário 2 (usando campo Real)

1 – O contexto do campo deve ser Real (ou seja, a informação será salva no banco de dados)

2 – Você precisa utilizar alguma função no Ini. Padrão (como o GetSXENum)

* Irá funcionar apenas na Inclusão

Obs.: Um adendo a se fazer, é que se você for buscar informação de outra tabela, o ideal também é ter gatilhos, sendo que ao alterar uma informação, ela alterar nesse campo que será inicializado. Por exemplo, criei o campo Z00_DESCRI que é referente a descrição do produto (B1_DESC), e o campo Z00_PRODUT que é referente ao B1_COD, ao preencher o Z00_PRODUT disparar um gatilho preenchendo o Z00_DESCRI com o B1_DESC respectivo.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

1 Response

  1. Maurilio disse:

    Boa tarde Dan
    Excelente conteúdo, estou aprendendo muito com você.

    Caso eu tenha um campo data, que inicializa de forma padrão com o DATE () e ele é somente leitura, como eu faria para toda vez que o registro entrar em modo de edição (for alterado) ele chame o DATE () novamente. Basicamente é um campo para salvar a data da ultima alteração.

Deixe uma resposta

Terminal de Informação