Tempo aproximado para leitura: 00:07:30 min
Dúvida
Como resolver erros de sequência numérica nos programas do GFE - Gestão de Frete Embarcador ou em outros módulos do Protheus?
Ambiente
TOTVS Logística - TOTVS Frete Embarcador (Linha Protheus) - Gestão de Frete Embarcador (SIGAGFE) - Todas as Versões
Solução
Para os cadastros e movimentos no qual a numeração é gerada automaticamente e não é permitido que o usuário altere a mesma, esta numeração é controlada pelas tabelas SXE/SXF ou pelo License Server dependendo da configuração do ambiente do cliente.
Inicialmente deverá ser verificado se o controle de numeração está sendo realizado pelo License Server.
Para isso deverá ser aberto appserver.ini do License Server que normalmente tem o nome totvsappserver.ini e procurar pela tag EnableNumber e verificar se está ligado - igual a 1 ou desligado - igual 0.
Quando está igual a 1 significa que está ligado, ou seja, o controle de numeração está sendo realizado pelo License Server.
Quando está igual a 0 significa que está desligado, ou seja, o controle de numeração não está sendo realizado pelo License Server e sim pelos arquivos SXE e SXF do Protheus. Estes arquivos ficam dentro da pasta system da instalação do Protheus.
Para o primeiro caso, onde o controle de numeração está sendo realizado pelo License Server, deve ser seguido o passo-a-passo abaixo:
1. Executar o programa APCFG110 - Controle de Numeração pela opção Miscelanea/Executar Programas. Neste programa Executar Programas, informar APCFG110 no campo Nome Funcao e Confirmar.
2. Neste novo programa aberto, Numerador Automático, procurar na primeira grid o Alias da tabela que está ocorrendo o erro de Chave Duplicada para a Filial em questão - a Filial aparece no começo da coluna Chave. Após encontrar o registro correto, alterar a coluna Número para dois número acima do último documento criado. Por exemplo, o último romaneio existente para a Filial 01 é 0003560 e neste caso deve-se informar o número 0003562.
3. Neste mesmo programa Numerador Automático, porém na segunda grid executar o mesmo procedimento descrito acima porém alterar a coluna Número para um número acima do último documento criado. Por exemplo, o último romaneio existente para a Filial 01 é 0003560 e neste caso deve-se informar o número 0003561.
Para o segundo caso, onde o controle de numeração está sendo realizado pelo Protheus, deve-se seguir o passo-a-passo abaixo:
1. Procurar pelos arquivos SXE.??? e SXF.??? dentro do diretório system e renomear os mesmos. Quando acessar o Protheus novamente e incluir o próximo documento estes arquivos serão criados e alimentados com o próximo numerador de forma automática.
Neste segundo caso, pode ser realizado o mesmo passo-a-passo do primeiro caso, porém este procedimento é mais rápido e vai resolver o problema de chave duplicada para todas as tabelas.
Informações adicionais fornecidas pela área de Tecnologia:
No momento da instalação do License Server 2014, é questionado se a numeração automática será controlada pelo Hardlock - Sim/Não. Se manter como Sim - que é a configuração mais recomendada, ele assume a numeração por hardlock - Enablenumber=1. Se manter o controle por SXE/SXF, deve selecionar a opção Não, ou alterar a linha para Enablenumber=0.
Caso tenha gerada incorreção na numeração, segue abaixo o procedimento de acerto de numeração automática:
- Verificar inicialmente questões referentes ao campo 1 em questão.
- Caso não seja resolvido o problema deve-se verificar sobre o controle 2.
0 - Pasta system
Mais de uma pasta system = uso obrigatório de hardlock
Não funciona com SXE e SXF para mais de um system.
1 - Sobre o campo:
1.1 - Para que o cadastro de clientes, por exemplo, traga na inclusão automaticamente o próximo número disponível, pode-se utilizar a seguinte sintaxe no inicializador padrão do campo A1_COD:
GetSx8Num("SA1","A1_COD")
Na maioria das vezes o inicializador padrão do campo está cadastrado como: GetSx8Num("SA1").
2 - Sobre o controle:
2.1 - Como está definido o controle - ENABLENUMBER? É pelo hardlock ou pelo SXE e SXF?
[LICENSESERVER]
enable=1
ENABLENUMBER=0
;CONTROLE DE NUMERAÇÃO
;=1 PELO HARDLOCK default
;=0 PELO SXE E PELO SXF
2.2 - Procedimento para Acerto de Numeração Automática quando utiliza Hardlock - Recomendado pela Microsiga:
Para acertar a numeração pelo hardlock, siga os seguintes passos.
- Parar todo o serviço do Protheus que controla o hardlock e caso possua mais de um Protheus Service, para todos eles;
- Subir o Protheus Server que controla a numeração pelo hardlock em Modo Console - Somente em Modo Console, ou seja, a partir de comando diretamente no DOS;
- Parar o serviço que controla a numeração por hardlock e desta forma será criado o arquivo lsnumber.val no diretório \BIN\SERVER\ do serviço que está sendo executado -CTRL+C: YES.
- Apagar o arquivo LSNUMBER.VAL.
- Subir o Protheus Server que controla a numeração pelo hardlock em Modo Console e acessar o módulo que deverá ser acertada a numeração. Neste ponto, como não existe nenhuma numeração de referência, o hardlock irá pegar o número máximo existente para o campo e irá incrementar em +1.
- Parar o serviço que controla a numeração por hardlock e desta forma será criado o arquivo LSNUMBER.VAL no diretório \BIN\SERVER\ do serviço que está sendo executado e neste arquivo será armazenada a numeração pertinente ao campo.
- A partir deste ponto, poderá subir o Protheus Server em modo Serviço, através da ferramenta de controle de serviços do Windows.
Este procedimento irá acertar a numeração para a rotina e consequentemente como todas as numerações automáticas que são controladas pelo hardlock serão reiniciadas.
Este procedimento deve ser efetuado em modo exclusivo, pois, qualquer intervenção que os procedimentos sofrerem por acesso de usuários, deverá ser reiniciado todo o procedimento novamente desde do início.
O uso de numeração automática em base de teste com mesmo servidor de licenças - hardlock da produção compromete a sequência de numeração da base de produção. Nesse caso a melhor solução é solicitar um novo hardlock e trabalhar separado.
2.3 - Procedimento para acerto de numeração automática quando utiliza SXE e SXF:
Para manutenção do SXE e SXF e numeração para Hardlock. Basta criar uma opção no Menu chamando o programa APCFG110.
- Ambiente/Cadastro/Menu;
- Selecionar somente o menu no Configurador clicar em OK;
- Adicionar o menu para a coluna novo menu;
- Selecionar onde deverá ser salva a rotina;
- Clicar em novo item;
- Preencher o nome em port/ ingl e esp;
- Em programa APCFG110 selecionar o módulo de configurador clicar em ok;
- Gerar como sigacfg/ sair do configurador e entrar novamente para visualizar a nova rotina
Na rotina APCFG110 no configurador, verificar qual numeração está incorreta - o número em uso ou próximo número, efetuar a alteração manualmente.
3 - Quando uma tabela tiver mais de um campo com numeração automática, a função deve ficar conforme exemplo:
CAMPO: A1_COD – GETSXENUM(SA1, A1_COD, A1_COD)
CAMPO: A1_CODTST – GETSXENUM(SA1, A1_CODTST, A1_CODTST)
Se você não repetir o campo na função, o Sistema só assume a numeração pelo Alias.
4 - Caso o problema seja em uma rotina pontual é necessário verificar a questão com a rotina.
Solicitamos ao cliente confirmar em quais rotinas ocorre erro de numeração automática e se é somente nela.
0 Comentários