Tempo aproximado para leitura: 00:04:35 min
Ocorrência
Ao realizar o apontamento de produção está ocorrendo o erro Cannot insert duplicate key row in object 'dbo.SMO ou Não é possível inserir linha de chave duplicada no objeto 'dbo.SMO.
Ambiente
TOTVS Manufatura - TOTVS Manufatura (Linha Protheus) - Planejamento e Controle da Produção (SIGAPCP) - Versão 12
Causa
A partir da release 12.1.2410 , a numeração sequencial das notas fiscais de entrada, saída e movimentos internos realizada através do parâmetro MV_DOCSEQ - Último número sequencial utilizado para movimentos foi substituída pelo controle via License Server, e essa mudança pode eventualmente resultar no erro de chave duplicada na tabela SMO - Informação Complementar Apontamento
Solução
Para solucionar essa ocorrência, realize os seguintes passos:
1. Atualize o License Server;
2. Certifique-se de que todos os RPOs - Repositórios possuem a mesma data para o fonte MATA250.PRX que deve ser igual ou superior a 19/02/2025;
3. Certifique-se de que todos os RPOs possuem a mesma data para o fonte backoffice.stock.newProxNum.tlpp que deve ser igual ou superior a 14/07/2025;
4. Certifique-se de que todos os ambientes que conectam ao mesmo banco de dados possuem a mesma chave SpecialKey configurada no appserver.ini, se realizar algum ajuste, reinicie o appserver;
5. Certifique-se de que nenhum appserver.ini possui a chave CheckSpecialKey=0 , se encontrar em algum remova e reinicie o appserver;
6. Execute a consulta abaixo no seu banco de dados, corrigindo os nomes das tabelas para os nomes corretos no seu ambiente
SELECT MAX(NUMSEQ) NUMSEQ FROM (
SELECT MAX(D1_NUMSEQ) NUMSEQ
FROM SD1
WHERE D_E_L_E_T_ = ' '
UNION ALL
SELECT MAX(D2_NUMSEQ) NUMSEQ
FROM SD2
WHERE D_E_L_E_T_ = ' '
UNION ALL
SELECT MAX(D3_NUMSEQ) NUMSEQ
FROM SD3
WHERE D_E_L_E_T_ = ' '
UNION ALL
SELECT MAX(D3_IDENT) IDENT
FROM SD3
WHERE D_E_L_E_T_ = ' '
UNION ALL
SELECT MAX(H6_IDENT) IDENT
FROM SH6
WHERE D_E_L_E_T_ = ' '
) MAIOR
7. Acesse o SIGACFG - Configurador e na rotina de APCFG110 - Controle de Numeração procure pela chave que contém o conteúdo da SpecialKey do seu ambiente seguida de @@@SD2. Para esse registro, no campo Número, atribua o valor obtido a partir da query executada no passo 6 somado do valor 1.
Exemplo: se o resultado da consulta é ABCDEF, então o valor que deve ser atribuído é no campo Número é ABCDEG.
Saiba Mais
Para maios informações sobre a mudança no sequencial acesse:
2024 - 31/10 Parâmetro MV_DOCSEQ
0 Comentários