Passa al contenuto

Come Risolvere l’Errore “Record Does Not Exist or Has Been Deleted” in Odoo

Scopri come risolvere l’errore “record does not exist” in Odoo: spiegazioni chiare, cause più frequenti e soluzioni pratiche passo dopo passo pensate sia per utenti sia per sviluppatori. Imparerai a individuare perché un record viene segnalato come assente, a verificare permessi e riferimenti, a correggere problemi nei dati e nel codice, e a testare le correzioni in sicurezza per evitare regressioni. Questo guida ti dà una checklist operativa, comandi e frammenti di controllo utili per diagnosticare e riparare rapidamente l’errore, insieme ai consigli per prevenire il problema in futuro.
17 febbraio 2026 di
Elisa Van Outrive
| Ancora nessun commento

Introduzione


L’avviso “Record non esiste o è stato eliminato” è tra i messaggi più criptici che gli utenti Odoo incontrano: compare all’improvviso aprendo un modulo, convalidando una scheda o durante un processo automatico, interrompendo il lavoro senza spiegazioni immediate.


Nonostante il tono allarmistico, raramente significa che i dati siano corrotti: più spesso è il sintomo di un riferimento rotto tra tabelle o di un controllo di accesso che impedisce la visualizzazione.


Vediamo in modo chiaro cosa suggerisce questo messaggio e quali passi pratici intraprendere per risolverlo senza rischi.

Cosa indica questo errore


L’errore si verifica quando Odoo prova ad accedere a un record usando un identificatore che:


  • Non è più presente nel database
  • È stato cancellato
  • È nascosto per motivi di permessi
  • Appartiene a una diversa società nel contesto multi-company

Esempio pratico:


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

Se l’ID 45 non è presente, Odoo solleverà l’errore.



Cause più frequenti



1. Riferimenti a record cancellati

Campi Many2one possono continuare a puntare a voci rimosse, creando collegamenti “orfani”.


Questo problema emerge spesso dopo:


  • Eliminazioni manuali fatte in modo distruttivo
  • Pulizie di dati di test
  • Importazioni fallite che lasciano riferimenti parziali

2. Mapping di ID esterni errato


Nelle integrazioni API, sistemi esterni possono inviare identificativi non validi o non sincronizzati.

Ad esempio, se Odoo riceve:


{ "partner_id": 99999 }

E quell’ID non esiste nel sistema, si innesca l’errore.


3. Vincoli multi-company


Il record può esistere ma non è visibile nel contesto aziendale corrente.

Effettuare il test con un utente amministratore spesso rivela se si tratta di un problema di permessi.


4. Problemi dopo migrazioni o upgrade


L’aggiornamento di moduli o la ristrutturazione dei dati possono lasciare riferimenti a strutture ormai modificate.

Come risolverlo


Passo 1 – Verificare che il record esista

record = self.env['model.name'].browse(record_id) if record.exists(): # uso sicuro

Passo 2 – Controllare i permessi


Eseguire il controllo con un account amministratore.

Se l’admin vede il record ma l’utente no → problema di regole di accesso.


Passo 3 – Ripulire i campi relazionali


Individuare Many2one orfani e correggere o azzerare i riferimenti.


Passo 4 – Verificare le integrazioni esterne


Controllare con attenzione:


  • Payload delle API
  • Logica di mapping
  • Strato di sincronizzazione

Un mapping incoerente degli ID è causa ricorrente nelle integrazioni.



Come evitarlo in futuro



  • Evitare l’uso di ID hardcoded
  • Utilizzare gli external IDs in modo coerente
  • Validare gli input dalle API
  • Testare le migrazioni in un ambiente di staging
  • Non eliminare record che sono referenziati altrove senza una strategia


Come Dasolo previene gli errori “Record non esistente”


L’errore “Record non esiste” nasce quasi sempre da incoerenze nelle relazioni tra modelli: sebbene si manifesti nell’interfaccia, la radice sta spesso in record cancellati, link rotti o manipolazioni dirette e non sicure del database.


Da Dasolo consideriamo questo errore come un campanello d’allarme strutturale, non un semplice bug isolato. Di solito indica:


  • Riferimenti relazionali rimasti orfani
  • Flussi di cancellazione inappropriati
  • Disallineamenti nelle integrazioni
  • Mancanza di validazioni prima dell’accesso ai record
  • Gestione incoerente del contesto multi-company

Per evitare questi scenari progettiamo soluzioni Odoo con gestione controllata del ciclo di vita dei dati: preferiamo l’archiviazione alla cancellazione definitiva e applichiamo pratiche ORM rigorose per preservare l’integrità referenziale. Così riduciamo al minimo le eccezioni “record non trovato” in produzione.



Conclusione


In sostanza, l’errore si verifica quando il sistema tenta di leggere un record eliminato o mai creato correttamente. Spesso non è una semplice voce mancante, ma il risultato di logiche relazionali difettose o operazioni dati insicure.


Mantenendo una struttura relazionale coerente, verificando l’esistenza dei record prima dell’accesso e evitando manipolazioni dirette del database, gli sviluppatori possono diminuire drasticamente la comparsa di questo errore. Un ambiente Odoo ben progettato applica workflow controllati e pratiche prevedibili di gestione dati.


Affrontare la causa alla radice non risolve solo l’errore immediato, ma rafforza la stabilità del database e l’affidabilità del sistema nel lungo periodo.

Domande frequenti


Non necessariamente. Potrebbe essere semplicemente non accessibile nell’attuale contesto.

Sì, soprattutto i processi di sincronizzazione automatica.

Solo se non esistono dipendenze relazionali; altrimenti preferire l’archiviazione.


Elisa Van Outrive 17 febbraio 2026
Condividi articolo
Accedi per lasciare un commento