Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:

Microsiga Protheus

Ocorrência:

Procedimentos para ajustar o Controle de Numeração automática de Tabelas (ALIAS) diversos no Protheus

Ambiente:

SIGAFAT - Faturamento


CONTROLE DE NUMERAÇÃO AUTOMÁTICA PARA TABELAS (ALIAS) DIVERSAS POR SXE/SXF ou HARDLOCK / LICENSE SERVER


OBSERVAÇÃO: O controle de numeração do Protheus utiliza a sequência conforme Tabela ASCII

IMPORTANTE: No PROTHEUS 12 o controle deve ser somente via License Server. Para validar em seu ambiente, consulte abaixo.


Validação do Controle de Numeração

Como está definido o controle(ENABLENUMER)? É pelo License Server ou pelo SXE e SXF? Para analisar como é controlada, verificar como está configurado na sessão [licenseserver] - chave EnableNumber:

Ex
[LICENSESERVER]
Enable=1
Port=5555
ShowStatus=1
ENABLENUMBER= 0 ou 1

ENABLENUMBER= 0 = SXE e SXF
ENABLENUMBER= 1 = License Server (antigo hardlock)


Seguir esta ordem de verificação para acerto de numeração automática:


1 - Usuário ADMIN

O usuário que inicializa o serviço do Protheus Server (que usa License Server (hardlock)) deve ser o ADMINISTRADOR.

Se estiver ok, passe ao item seguinte.


2 - Pasta SYSTEM


2.1. SXE e SXF ou Hardlock.

Mais de uma pasta System = USO OBRIGATÓRIO DE HARDLOCK. NÃO FUNCIONA com SXE e SXF para mais de um SYSTEM.


2.2. Possui mais de um ambiente apontando para o mesmo banco de dados e o mesmo License Server (configuração no ini do server) como por exemplo ambiente Produção e Teste? É necessário:


a) Obrigatório uso da chave SpecialKey (detalhes em http://tdn.totvs.com/display/tec/SpecialKey).

Exemplo:

 [ENVDBF]

 SourcePath=C:\Protheus10\APO\R13

 RootPath=C:\Protheus10\Protheus_Data\R13

 StartPath=\system\\13

 x2_path=

 RpoDb=dbf

 RpoLanguage=portuguese

 RpoVersion=101

 LocalFiles=ads

 Trace=0

 localdbextension=.dbf

 SPECIALKEY=ENVDBF

com a chave CheckSpecialKey

 [general]

 CheckSpecialKey=0


b) Ambientes DIFERENTES.

Ambiente DBF: Se os ambientes forem DBF/CDX eles devem apontar para endereços no X2_PATH, obrigatoriamente, diferentes.

Ambiente TOP: Se os ambientes forem TOPConnect/TOTVSDBAcess, os alias dos ambientes devem ser, obrigatoriamente, diferentes.


Se 2.1 e 2.2 estiverem ok, passe ao item seguinte.


3 - Configuração do Campo para geração de número automático

Para que, por exemplo, o cadastro de clientes, traga na inclusão automaticamente o próximo número disponível, utiliza-se a seguinte sintaxe no inicializador padrão do campo A1_COD: GetSx8Num("SA1","A1_COD").

Validar se o X3 está com esta informação no inicializador padrão! Na maioria das vezes o inicializador padrão do campo está cadastrado como: GetSx8Num("SA1").

(Observação: Veja também se a configuração não está Nativa do módulo SIGALOJA: SIGALOJA Geração do código de cliente a partir do CPF/CNPJ)


Quando uma tabela tiver MAIS DE UM CAMPO com numeração automática, a função deve estar conforme exemplo:

CAMPO: A1_COD û GETSXENUM(SA1, A1_COD, A1_COD)
CAMPO: A1_CODTST û GETSXENUM(SA1, A1_CODTST, A1_CODTST)
Se não repetir o campo na função, o sistema só assume a numeração pelo Alias.


  • IMPORTANTE: Esta configuração no SX3 para geração automática de numeração sequencial deve ser utilizada apenas por campos nos quais já consta a definição no nativo do Protheus. Não deve ser incluída manualmente em campos que não possuem este controle automático por padrão, como por exemplo no campo C5_NUM
    Isto porque, este tratamento por si só não trata abandono de numeração reservada não utilizada (este tratamento é realizado no código fonte das rotinas). Ou seja, ao reservar a próxima numeração clicando em "Incluir" (registro 000010 por exemplo) mas não efetivar a gravação, abandonando o registro, depois de já ter sido utilizada a numeração seguinte (depois de outra instância ter gravado a 000011 por exemplo) serão provocadas lacunas fazendo com que o controle automático se perca. Desta forma, seria necessário verificar a possibilidade de uso de ponto de entrada na rotina que deseja implementar o uso de numeração automática para o fiel comportamento da ferramenta, de forma a tratar abandonos de reserva de numeração


Se estiver ok, passe ao item seguinte.


4 - Procedimento para Acerto de Numeração Automática


IMPORTANTE: Quando a numeração é controlada pelo License Server (antigo HARDLOCK), ao reiniciar o License Server não será mais criado o arquivo lsnumber.val (antes era utilizado esse arquivo); obrigando assim a regeração da numeração a partir da numeração já gravada no banco de dados"está se perdendo na numeração".

  • Atualize o License Server para uma versão igual ou superior a 1.03.014. Detalhes em: Habilitada geração do arquivo LSNumber.val

    Com esta atualização volta a ser gravado o arquivo LSNumber.val (quando o servidor de licenças é encerrado corretamente, via console ou no fim do serviço).
    Esse arquivo grava a última sequência disponível para as chaves em uso no License, quando o servidor de licenças é reiniciado esses dados são carregados para a aplicação e no momento de obter a próxima sequência serão considerado os dados que estiverem nesse arquivo.
    A funcionalidade é recomendada pois uma vez que a sequencia estiver corrigida o License irá guardar o conteúdo e continuar sempre a partir dele; ao invés de buscar na tabela do sistema a próxima sequencia para a chave.

  • Se estiver com License Server anterior à versão 1.03.014 e com builds superior a 7.00.131227A -  1.0.3 então, neste caso, o sistema não irá gravar o arquivo LSNumber.val e passará a buscar na Tabela a maior numeração já gravada para dar sequência. Detalhes em: Criação do LSNumber.val / Numeração automática pelo License Server

Deste modo
  • Ou seja, o

HARDLOCK
  • License Server irá varrer a Tabela em questão (exemplo SC5) no Banco de Dados e irá se basear na maior numeração que possui gravada e incrementar em +1
    Exemplo: A sequência do campo está na numeração 000096 , 000097 , 000098 , 000099 , 000100 .... Mas, por algum motivo, essa tabela já possui um registro gravado com a numeração 142535. Ao reiniciar o LS, irá varrer a tabela para encontrar a última numeração e como o número 142535 é maior que o 000100, seguirá a numeração a partir do 142535 respeitando a regra

da
  • da maior numeração que possui gravada e incrementar em +1
    Observação: Para ambientes que possuam lacunas na numeração automática como exemplificado acima, é possível utilizar o ponto de entrada CRIASXE, que consegue varrer a tabela e setar a numeração.Maiores informações: ADV0071_PE_CRIASXE_CONTROLE_DE_NUMERAÇÃO


Conferência: Verifique na tabela em questão qual é a maior numeração já gerada na Tabela (ou qual a última numeração gerada na sequência que deseja dar contiuidade) - Exemplo: 000100


4.1. Ajuste SXE / SXF

- Na tabela SXF - deixe o campo do código com o próximo número a ser gerado - Exemplo: 000101

- Na tabela SXE - deixe o campo do código com SXF+1 - Exemplo: 000102

- Deixe apenas uma linha para o ALIAS tanto na SXF quanto na SXE. Se houver outras linhas, delete.


4.2. Ajuste LICENSE SERVER


a) Inclusão da rotina APCFG110 no MENU

- Configurador SIGACFG > Ambiente > Ccadastro > 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

OBS: A rotina APCFG110 também pode ser consultada executando a fórmula: apcfg110() em campo macro executável como por exemplo campo CT5_VLR01


b) Linhas únicas por ALIAS / Filial

- Verificar na rotina APCFG110 a sessão "Próximos números" e principalmente a sessão "EM USO". Deverá conter apenas uma linha para cada ALIAS (por Filial).

Exemplo, ALIAS SC5, pode haver apenas uma linha de numeração para a SC5 para cada Filial. Caso esteja exibindo mais de uma linha para o mesmo ALIAS, reiniciar o License Server.


c) Correção

- Na sessão "Números em uso / números liberados" deixe o campo do código com o próximo número a ser gerado - Exemplo: 000101

- Na sessão "Próximos números" deixe o campo do código com +1 - Exemplo: 000102


5 - Nota complementar sobre Uso simultâneo

O uso simultâneo da Tabela faz com que o sistema se comporte de forma a atender todas as chamadas de numeração. O resultado da ordem da numeração está sujeito à efetivação realizada pelo usuário que a reservou.

A reserva de numeração compromete a ordem quando há mais de um usuário manipulando a tabela ao mesmo tempo, se determinado usuário já reservou a numeração e não efetivou o registro, após um segundo usuário ter reservado a numeração seguinte; podendo ocasionar em duplicidade de registros na SXF para garantir todas as reservas feitas. Desta forma, a não efetivação das reservas, compromete a numeração subsequente.

 

Pode lhe interessar:FAT0049 Controle de Numeração de Documento de saída no Protheus