Ir al contenido

Cómo solucionar el error “Record Does Not Exist or Has Been Deleted” en Odoo

Descubre cómo resolver el error "registro no existe" en Odoo: explicaciones claras, causas habituales y soluciones paso a paso pensadas tanto para usuarios como para desarrolladores.
17 de febrero de 2026 por
Elisa Van Outrive
| Sin comentarios aún

Introducción


El aviso “El registro no existe o ha sido eliminado” es uno de los mensajes que más desconcierto genera entre usuarios de Odoo. Suele aparecer de forma inesperada al abrir un formulario, validar una ficha o ejecutar un proceso automático, y deja al usuario sin saber si los datos se han perdido o si hay un fallo lógico.


A pesar del tono alarmista, en la mayoría de los casos este mensaje no señala corrupción de la base de datos, sino una referencia rota: Odoo intenta acceder a una relación que apunta a algo que no puede resolverse en ese contexto.


A continuación explico qué significa realmente ese error y qué pasos seguir para solucionarlo sin tocar datos de forma insegura.

Qué indica este error


Odoo intenta cargar un registro identificándolo por su ID y se encuentra con uno de estos problemas:


  • El ID ya no existe en la tabla correspondiente
  • El registro fue borrado
  • El registro existe pero el usuario no tiene permisos para verlo
  • El registro pertenece a otra compañía y no es visible en el contexto actual

Ejemplo práctico:


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

Si no hay un partner con ID 45, Odoo mostrará el error mencionado.



Causas más habituales



1. Referencias a registros eliminados

Campos many2one o relaciones pueden seguir apuntando a entradas que ya no existen.


Esto aparece con frecuencia cuando la limpieza de datos o borrados no se ejecutan con controles de integridad.


  • Borrados manuales realizados sin comprobar dependencias
  • Eliminación de datos de prueba sin revisiones
  • Importaciones que fallaron dejando referencias inválidas

2. Mapeo incorrecto de IDs externos


En integraciones vía API, sistemas externos pueden enviar identificadores que no coinciden con los del ERP interno.

Por ejemplo, cuando Odoo recibe un payload con un ID que no existe en la base de datos local:


{ "partner_id": 99999 }

Si ese ID no corresponde a ningún partner en Odoo, salta el error.


3. Restricciones por multiempresa


El registro puede existir, pero no está accesible desde la compañía o el usuario actual.

Iniciar sesión como administrador o cambiar el contexto de compañía suele revelar si ese es el caso.


4. Problemas tras migraciones o actualizaciones


Al actualizar módulos o migrar datos, las referencias pueden quedar desalineadas por cambios en la estructura o en los identificadores de referencia.

Cómo solucionarlo


Paso 1 – Verificar que el registro existe

record = self.env['model.name'].browse(record_id) if record.exists(): # acceso seguro al registro

Paso 2 – Revisar derechos de acceso


Comprueba si un usuario administrador puede ver el registro.

Si el admin ve el registro y el usuario no, el fallo está en una regla de acceso o en la visibilidad por compañia.


Paso 3 – Limpiar campos relacionales


Localiza campos many2one u otras relaciones huérfanas y corrígelas o ponlas a null cuando proceda.


Paso 4 – Validar integraciones externas


Revisa estos elementos clave:


  • Cargas API entrantes
  • Reglas de mapeo entre sistemas
  • La capa de sincronización

Un mapeo inconsistente de IDs es una causa recurrente en entornos integrados.



Cómo evitarlo



  • Buenas prácticas: evita codificar IDs fijos en el código
  • Usa IDs externos (external IDs) correctamente cuando proceda
  • Valida siempre los datos entrantes en las APIs
  • Prueba migraciones y sincronizaciones en un entorno staging antes de producción
  • Evita borrar registros que todavía son referenciados por otras tablas o procesos


Cómo Dasolo evita los fallos de “Registro no existe”


El error “Record Does Not Exist” suele ser la consecuencia de inconsistencias en las relaciones entre modelos. Aunque el fallo se manifieste en la interfaz, la raíz suele estar en referencias rotas, registros eliminados o intervenciones directas en la base de datos fuera del ORM.


En Dasolo interpretamos este tipo de errores como señales estructurales, no como incidentes aislados. Su aparición normalmente revela problemas como:


  • Referencias relacionales huérfanas
  • Flujos de borrado mal diseñados
  • Desajustes en integraciones con sistemas externos
  • Falta de comprobaciones antes de acceder a registros
  • Manejo incorrecto del contexto multiempresa

Para evitar estos fallos diseñamos soluciones Odoo con políticas claras de ciclo de vida de datos: preferimos archivar en lugar de eliminar y reforzamos la integridad referencial usando el ORM y validaciones en los puntos de integración. Así minimizamos excepciones inesperadas de “registro no encontrado” en producción.



Conclusión


El error “Record Does Not Exist” en Odoo ocurre cuando la aplicación intenta acceder a una entrada que ha sido borrada o nunca se creó correctamente. Aunque parece un simple registro perdido, habitualmente es el síntoma de una lógica relacional rota o de operaciones sobre los datos ejecutadas de forma insegura.


Mantener una arquitectura relacional coherente, validar la existencia de registros antes de acceder a ellos y evitar tocar la base de datos de forma directa reduce drásticamente la incidencia de este error. En entornos bien diseñados, la integridad de los registros se conserva mediante flujos controlados y prácticas predecibles de gestión de datos.


Abordar correctamente este problema no solo corrige el error puntual, sino que fortalece la estabilidad de la base de datos y la fiabilidad del sistema a largo plazo.

Preguntas frecuentes


No necesariamente. En muchos casos el registro existe pero no es accesible desde el contexto actual o ha sido archivado.

Sí, sobre todo a sincronizaciones automáticas y procesos batch que dependen de referencias válidas.

Solo si no existen dependencias relacionales; en la práctica es mejor archivar o validar exhaustivamente antes de eliminar.


Elisa Van Outrive 17 de febrero de 2026
Compartir esta publicación
Iniciar sesión para dejar un comentario