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.