Histórico da Página
A partir da versão 12.1.7 do Protheus, tendo em vista questões relacionadas a performance e melhorias no produto, alguns campos do Metadado de Campos de Tabelas (SX3) tiveram sua estrutura alterada.
Novas instalações do produto a partir da versão 12.1.7 vão possuir essa nova estrutura no SX3, não tendo a opção de manter a tabela com a estrutura antiga.
Clientes que possuem a versão 12 e vão realizar a migração para a versão 12.1.7 tem a opção de essa modificação ser facultativa, ficando a cargo do Administrador do sistema escolher se o produto vai aderir ou não a alteração.
...
A manipulação direta dos campos X3_RESERV, X3_OBRIGAT e X3_USADO não é recomendada, pois qualquer modificação efetuada nesses campos precisa ser replicada em todo lugar que realiza a manipulação direta.
Na versão 12.1.7 qualquer manipulação desse tipo nesses três campos poderá gerar erros e inconsistências no sistema, pois como esses campos tiveram o seu conteúdo modificado de binário para caractere, qualquer tentativa de transformar diretamente o conteúdo resultará em um conteúdo incorreto.
Ao utilizar a função Bin2Str com qualquer um dos campos, como na seguinte instrução, resultará em erro na versão 12.1.7, pois o conteúdo do campo X3_OBRIGAT será caractere:
...
Assim como a seguinte manipulação do campo X3_USADO também não será mais aceita na versão 12.1.7:
ALLTRIM(UPPER(SX3->X3_USADO)) <> "€€€€€€€€€€€€€€ "
A manipulação correta deverá ser feita conforme abaixo:
X3Uso(SX3->X3_USADO)
X3Reserv(SX3->X3_RESERV)
X3Obrigat(NOME_DO_CAMPO)
O Campo X3_USADO também é utilizado para determinar se um campo é chave ou se um campo é alterável. Para essas utilizações foram criadas as funções abaixo:
X3Chave(SX3->X3_USADO)
X3Alteravel(SX3->X3_USADO)
...