Árvore de páginas

Versões comparadas

Chave

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

...

Produto:

Microsiga Protheus®

Módulo:

SIGAFAT - Faturamento

Ocorrência:

Ao preparar o Documento de saída o sistema gera erro Primary Key violation in SE1, please contact your administrator on CHKE1NOTA(MATXFUNA.PRX)

Conhecimento:


Primary Key violation in SE1, please contact your administrator on CHKE1NOTA(MATXFUNA.PRX)

Erro exibido quando utiliza o Financeiro Compartilhado entre filiais; porém, com movimentos de Saída (contas a receber) Exclusivos

Ou seja,

Possui "apenas uma SE1" para receber os títulos gerados por "n" Filiais. Chega um momento em que há duplicidade no número dos títulos (pois são gerados cada um de uma Filial).

 

O compartilhamento Nativo do Protheus não causa este problema.

Ocorre apenas se o modo de compartilhamento das tabelas é modificado (geralmente na implantação para atender à gestão de negócios) sem considerar a criação das chaves primárias.

 

Há duas opções para que o problema não ocorra:

  • Alterar o compartilhamento das Tabelas de forma que o Financeiro e o Faturamento estejam compatíveis (ou ambos compartilhados, ou ambos exclusivos).
    Se for uma base antiga, já com muitos dados é provável que não seja uma opção viável para sua base.

 

  • Customizar a geração do Prefixo do titulo, de forma que cada Filial gere um prefixo. Assim os títulos são gerados com numeração diferente:
    Para utilizar o Financeiro Compartilhado entre filiais, com movimentos de Saída (contas a receber) Exclusivos, é necessário tratar o parâmetro MV_1DUPREF por filial para formação da chave primária com prefixo diferente para que não ocorra erro de chave duplicada na SE1
    Para esta alternativa, o tratamento é realizado por uma expressão ADVPL chamada por ExecBlock conforme exemplificado no link: https://www.totvs.com/mktfiles/tdiportais/helponlineprotheus/portuguese/sigafin_integracao_modulos_materiais.htm

    Por padrão o conteúdo do MV_1DUPREF é SF2->SERIE sendo uma alternativa alterar para, por exemplo, SF2->F2_FILIAL+F2_SERIE (É necessário avaliar se o número a ser gerado não está já gravado na base de forma a continuar gerando o erro).

    Este parâmetro é macro executável logo, deve receber uma expressão ADVPL ou um retorno de um rdmake criado chamado por U_FUNCAO()

    Obs: Havendo dificuldade neste sentido, contate nosso Suporte a ADVPL do Protheus.