Pular para o conteúdo

Como Corrigir o Erro “Record Does Not Exist or Has Been Deleted” no Odoo

Saiba resolver o erro “registro não existe” no Odoo: explicações simples, causas frequentes e soluções passo a passo para utilizadores e programadores Odoo.
17 de fevereiro de 2026 por
Elisa Van Outrive
| Nenhum comentário ainda

Introdução


A mensagem “Registo não existe ou foi eliminado” costuma surgir de forma inesperada no Odoo: ao abrir um formulário, ao validar um documento ou quando um processo automático corre em segundo plano. Para o utilizador, parece um erro súbito e inexplicável que interrompe o fluxo de trabalho.


Apesar do tom alarmante, raramente indica corrupção de dados. Na maioria das situações aponta para referências quebradas entre registos — ligações que passaram a apontar para algo que já não está lá ou que não é visível no contexto atual.


A seguir explico, de forma prática, o que está por detrás desta mensagem e quais os passos seguros para diagnosticar e corrigir o problema sem causar mais danos nos dados.

O que significa este erro


Odoo tentou aceder a um registo na base de dados usando um identificador (ID) que pode ter um dos seguintes estados:


  • Já não existir no sistema
  • Ter sido eliminado
  • Estar inacessível por regras de acesso (permissões)
  • Pertencer a outra empresa no modo multi-empresa

Exemplo prático:


record = self.env['res.partner'].browse(45)

Se não existir nenhum parceiro com o ID 45, o Odoo lança o erro. É um exemplo simples de como uma tentativa de leitura falha quando o ID não corresponde a um registo válido.



Causas mais comuns



1. Registos eliminados continuam referenciados

Campos Many2one podem ficar a apontar para entradas que já foram eliminadas, criando ligações órfãs dentro do modelo relacional.


Isto acontece com frequência depois de operações de limpeza ou operações manuais que não atualizam todas as dependências.


  • Eliminações feitas manualmente sem verificação das dependências
  • Limpeza de dados de teste sem rever referências
  • Importações ou operações batch que falharam a meio e deixaram o sistema inconsistente

2. Mapeamento de IDs externos incorreto


Quando integrações externas enviam IDs que não existem no Odoo, ou quando o mapeamento entre sistemas está desalinhado, recebemos referências inválidas.

Se a integração enviar um payload com um ID inexistente, o Odoo não consegue resolver a ligação e devolve o erro.


Por exemplo: { "partner_id": 99999 }

Se o ID 99999 não existir no Odoo, a tentativa de criação/atualização falha com “registo não existe”.


3. Restrições em ambientes multi-empresa


O registo pode existir, mas não ser visível no contexto da empresa corrente — por políticas de multi-empresa ou regras de domínio.

Ao testar com um utilizador administrador ou com o superuser, muitas vezes o registo aparece, confirmando tratar-se de um problema de contexto/permissões.


4. Problemas após migrações ou atualizações


Durante upgrades de módulos ou migrações de dados, estruturas e referências podem mudar. Se não for feito o ajuste correto, alguns IDs passam a apontar para registos já alterados ou removidos.

Como resolver


Passo 1 – Verificar se o registo existe

Exemplo de verificação segura: record = self.env['model.name'].browse(record_id) if record.exists(): # seguro para operar Usar .exists() evita aceder a objetos vazios e evita exceções desnecessárias.

Passo 2 – Confirmar direitos de acesso


Teste sempre com uma conta administrativa ou com o superuser para perceber se é um problema de permissões.

Se o administrador vê o registo e o utilizador normal não, é sinal de que existem regras de acesso (ir.rule) ou domínios a corrigir.


Passo 3 – Limpar campos relacionais órfãos


Identifique campos Many2one que apontem para IDs inexistentes e corrija-os: atribua o valor correcto ou defina como nulo quando apropriado.


Passo 4 – Validar integrações externas


Revise as camadas de integração para garantir que apenas IDs válidos chegam ao Odoo:


  • Verifique os payloads das APIs
  • Confirme a lógica de mapeamento entre sistemas
  • Teste a camada de sincronização

Em sistemas integrados, um mapeamento inconsistente de IDs é uma das causas mais frequentes deste erro.



Como evitar que volte a acontecer



  • Boas práticas básicas: evite codificar IDs diretamente no código ou nas integrações;
  • utilize external IDs (xml_id) e mecanismos de resolução de referências;
  • valide sempre os inputs recebidos via API antes de os persistir;
  • faça testes de migração e integração em ambientes de staging antes de correr em produção;
  • evite eliminar registos que são referenciados noutros modelos sem primeiro analisar o impacto.


Como a Dasolo evita problemas de “Registo não existe”


O erro “Registo não existe” surge quando as ligações entre modelos ficam inconsistentes. Embora a mensagem apareça na interface, a origem habitual é lógica relacional quebrada: registos eliminados, relações órfãs ou alterações diretas na base de dados que contornaram as regras do ORM.


Na Dasolo encaramos este alerta como um sintoma estrutural e não como um simples bug isolado. O erro costuma denunciar:


  • Referências relacionais órfãs
  • Fluxos de eliminação que não preservam integridade referencial
  • Falhas de compatibilização entre sistemas integrados
  • Ausência de validações antes de aceder a registos
  • Mau tratamento do contexto multi-empresa

Para minimizar estes riscos, desenhamos soluções Odoo com gestão rigorosa do ciclo de vida dos dados: preferimos arquivar em vez de apagar, aplicamos boas práticas do ORM e incorporamos validações e regras que preservam a integridade referencial. Assim reduzimos exceções inesperadas em ambiente de produção.



Conclusão


O erro “Registo não existe” aparece quando o Odoo tenta aceder a um registo que foi eliminado ou que nunca foi criado corretamente. Embora pareça um registo em falta, a causa subjacente reside frequentemente na lógica relacional quebrada ou em operações inseguras sobre a base de dados.


Manter uma arquitetura relacional consistente, validar a existência do registo antes de o aceder e evitar manipulações diretas à base de dados são medidas que diminuem significativamente a frequência deste erro. Em ambientes bem desenhados, a integridade dos registos é assegurada por workflows controlados e práticas previsíveis de gestão de dados.


Resolver este problema de forma adequada não só elimina a mensagem de erro imediata como também reforça a estabilidade da base de dados e a fiabilidade do sistema a longo prazo.

Perguntas frequentes


Nem sempre. Muitas vezes o registo existe mas está inacessível por permissões, ou foi arquivado em vez de eliminado.

Sim. Jobs automáticos e sincronizações são particularmente sensíveis a referências inválidas.

Só se tiver a certeza absoluta de que não existem dependências relacionais; caso contrário, prefira arquivar ou limpar as referências primeiro.


Elisa Van Outrive 17 de fevereiro de 2026
Compartilhar esta publicação
Iniciar sessão para deixar um comentário