Inleiding
De foutmelding “Record bestaat niet of is verwijderd” is een van de meest verwarrende berichten die Odoo-gebruikers tegenkomen. Het verschijnt vaak plotseling bij het openen van een formulier, het valideren van een record of het uitvoeren van een geautomatiseerd proces.
Ondanks de dramatische bewoording geeft deze fout meestal een verbroken referentie aan in plaats van daadwerkelijke gegevenscorruptie.
Laten we uiteenzetten wat het echt betekent en hoe het veilig op te lossen.
Wat deze fout betekent
Odoo probeerde toegang te krijgen tot een database-record met een ID die:
- Niet langer bestaat
- Werd verwijderd
- Is onbereikbaar vanwege machtigingen
- Behoort tot een ander bedrijf
Voorbeeld:
record = self.env['res.partner'].browse(45)
Als record ID 45 niet bestaat, genereert Odoo de fout.
Veelvoorkomende oorzaken
1. Verwijderde records nog steeds verwezen
Many2one-velden kunnen verwijzen naar verwijderde vermeldingen.
Dit gebeurt vaak na:
- Handmatige verwijderingen
- Opruimen van testgegevens
- Mislukte importen
2. Onjuiste externe ID-mapping
Tijdens API-integraties kunnen externe systemen ongeldige ID's doorsturen.
Als Odoo ontvangt:
{ "partner_id": 99999 }
En die ID bestaat niet, dan treedt de fout op.
3. Multi-Company Beperkingen
Het record bestaat, maar is niet zichtbaar onder de huidige bedrijfscontext.
Overschakelen naar superuser onthult vaak het record.
4. Migratie- of Upgradeproblemen
Na het upgraden van modules kunnen verwijzingen wijzen naar verouderde of herstructureerde records.
Hoe het op te lossen
Stap 1 – Controleer of het record bestaat
record = self.env['model.name'].browse(record_id) if record.exists(): # veilig te gebruiken
Stap 2 – Controleer Toegangsrechten
Test met een admin-account.
Als de admin het kan zien maar de gebruiker niet → probleem met toegangsregels.
Stap 3 – Maak Relationele Velden Schoon
Zoek wees Many2one-velden en corrigeer of neutraliseer ze.
Stap 4 – Valideer Externe Integraties
Herzie:
- API-payloads
- Mappinglogica
- Synchronisatielaag
Inconsistente ID-mapping is een veelvoorkomende oorzaak in geïntegreerde systemen.
Hoe het te voorkomen
- Vermijd het hardcoderen van ID's
- Gebruik externe ID's correct
- Valideer API-invoer
- Test migraties op staging
- Vermijd het verwijderen van records die elders worden verwezen
Hoe Dasolo “Record bestaat niet” problemen voorkomt
De foutmelding “Record bestaat niet” verschijnt vaak wanneer de verwijzingen tussen modellen inconsistent worden. Hoewel het in de UI kan verschijnen, is de oorzaak meestal gerelateerd aan verwijderde records, gebroken relationele koppelingen of onveilige directe database-manipulatie.
Bij Dasolo beschouwen we deze fout als een structureel signaal in plaats van een geïsoleerde storing. Het onthult doorgaans:
- Weesachtige relationele verwijzingen
- Onjuiste verwijderingsworkflows
- Integratiemismatches
- Ontbrekende validatiecontroles vóór toegang tot records
- Inconsistente behandeling van multi-company context
Om deze situaties te voorkomen, ontwerpen we Odoo-systemen met gecontroleerd gegevenslevenscyclusbeheer. In plaats van kritieke records te verwijderen, geven we de voorkeur aan archiveringsstrategieën en handhaven we referentiële integriteit door middel van gestructureerde ORM-praktijken. Deze aanpak minimaliseert onverwachte “record niet gevonden” uitzonderingen in productie.
Conclusie
De Odoo "Record Does Not Exist" fout treedt op wanneer het systeem probeert toegang te krijgen tot een record dat is verwijderd of nooit correct is aangemaakt. Hoewel het misschien lijkt op een eenvoudige ontbrekende invoer, is de onderliggende oorzaak vaak gerelateerd aan gebroken relationele logica of onveilige gegevensbewerkingen.
Door een consistente relationele architectuur te onderhouden, de aanwezigheid van records te valideren voordat toegang wordt verleend, en directe database-manipulatie te vermijden, kunnen ontwikkelaars de kans op deze fout aanzienlijk verminderen. In goed gestructureerde Odoo-omgevingen wordt de integriteit van records behouden door gecontroleerde workflows en voorspelbare gegevensbeheerpraktijken.
Dit probleem op de juiste manier aanpakken lost niet alleen de onmiddellijke fout op, maar versterkt ook de algehele database-stabiliteit en de betrouwbaarheid van het systeem op lange termijn.
Veelgestelde vragen
Niet noodzakelijk. Het kan gewoon ontoegankelijk zijn.
Ja, vooral geautomatiseerde synchronisatietaken.
Alleen als er geen relationele afhankelijkheden bestaan.