Introduktion
Fejlteksten “Record does not exist or has been deleted” dukker ofte op ud af det blå i Odoo — når du åbner en formular, godkender en post eller en automatisering kører. For mange brugere føles den pludselig og uforståelig, fordi den signalerer et manglende eller utilgængeligt databaseelement midt i en handling.
Bag den alarmistiske formulering ligger sjældent ødelagte tabeller; oftere er der tale om en brudt reference — en relation, der peger på noget, der ikke længere er tilgængeligt eller aldrig har eksisteret i den aktuelle sammenhæng.
Her gennemgår vi, hvad fejlen normalt dækker over, og hvilke sikre trin du kan tage for at finde og rette årsagen uden at skabe større problemer i databasen.
Hvad fejlen egentlig betyder
Odoo prøver at slå et databaseelement op med et bestemt ID, og fejlen opstår når det ID:
- Ikke længere findes i databasen
- Er blevet slettet
- Er utilgængeligt på grund af adgangsregler
- Hører til en anden virksomhedskontekst (multi-company)
Eksempel:
record = self.env['res.partner'].browse(45)
Hvis posten med ID 45 ikke findes, vil Odoo kaste fejlen.
Almindelige årsager
1. Referencer til slettede poster
Mange2one-felter kan pege på poster, som senere er blevet fjernet — og så står relationen tilbage som en ‘tom’ henvisning.
Det sker typisk i forbindelse med:
- Manuelle sletninger fra brugerfladen
- Rydning af testdata efter udvikling eller testkørsler
- Fejlslagne dataimporter, der efterlader ugyldige links
2. Forkert kortlægning af eksterne ID’er
Når eksterne systemer skriver til Odoo via API, kan de komme til at sende ID’er, som ikke svarer til eksisterende poster i din instans.
Hvis Odoo modtager forkerte referenceværdier,
{ "partner_id": 99999 }
og dette ID ikke findes, udløses fejlen.
3. Multi-company begrænsninger
Posten kan godt eksistere, men ikke være synlig i den aktuelle virksomheds-kontekst — derfor virker den ‘ikke-eksisterende’ for brugeren.
Hvis man skifter til superuser eller en anden virksomhedskontekst, dukker posten ofte op igen.
4. Problemer efter migration eller opgradering
Opgraderinger og migrationer kan omstrukturere data eller ændre referencer, så gamle relationer peger forkert eller mangler efter konvertering.
Sådan retter du fejlen
Trin 1 – Bekræft, at posten findes
Brug ORM-metoder til at tjekke: record = self.env['model.name'].browse(record_id) if record.exists(): # trygt at arbejde videre med posten
Trin 2 – Tjek adgangsrettigheder
Log ind som administrator for at se, om posten er synlig der.
Hvis admin kan se posten, mens almindelige brugere ikke kan, peger det på en rettigheds- eller adgangsregelkonflikt.
Trin 3 – Ryd op i relationer
Søg efter ‘forældreløse’ Many2one-felter og ret dem: enten sæt dem til null eller peg dem på korrekte poster for at undgå brudte links.
Trin 4 – Valider integrationer
Gennemgå nøje:
- API-forespørgslernes indhold
- Kortlægningslogikken mellem systemerne
- Eventuelle synkroniseringslag mellem kilderne
Uoverensstemmende ID-mapping er en hyppig årsag i integrerede landskaber.
Sådan forebygger du den
- Undgå at hardcode ID’er i integrationer eller scripts
- Brug eksterne ID’er (external IDs) korrekt og entydigt
- Valider alle API-inputs, før de anvendes til at oprette eller opdatere relationer
- Test større migreringer eller importjobs i en staging-miljø først
- Undgå at slette poster, som stadig refereres fra andre steder i systemet
Sådan forhindrer Dasolo “Record Does Not Exist”-problemer
Fejlen viser typisk, at relationerne mellem modeller er blevet inkonsistente. Selvom den ofte dukker op i brugerfladen, er rodårsagen som regel slettede poster, brudte relationer eller direkte databaseændringer uden ORM-sikkerhed.
Hos Dasolo ser vi denne fejl som et symptom på strukturelle mangler i datahåndteringen — ikke kun som en enkeltstående fejlmeddelelse.
- Ofte afdækker den forældreløse relationer,
- forkerte eller risikable sletteprocesser,
- mismatch i integrationer,
- manglende validering før adgang til poster,
- og uhensigtsmæssig håndtering af multi-company kontekst.
For at undgå disse fejl bygger vi Odoo-løsninger med klart styrede data-livscyklusser. I stedet for blindt at slette vælger vi arkivering, og vi håndhæver referentiel integritet via ORM-mønstre og valideringslag. Det reducerer chancen for uventede “record not found” i produktion.
Konklusion
Odoo-fejlen opstår, når systemet forsøger at hente en post, der er blevet slettet eller aldrig korrekt oprettet. Bag det simple symptom ligger ofte brudt relationslogik eller unsafe dataoperationer, som bør adresseres systematisk.
Ved at holde en konsekvent relationsarkitektur, altid tjekke posters eksistens før adgang og undgå direkte manipulation af databasen kan udviklere markant mindske forekomsten af denne fejl. Velstrukturerede Odoo-installationer beskytter data gennem veldefinerede workflows og forudsigelige håndteringsregler.
At løse problemet rigtigt fjerner ikke bare den aktuelle fejl — det styrker også databasen og øger platformens stabilitet og driftssikkerhed på længere sigt.
Ofte stillede spørgsmål
Ikke nødvendigvis. Den kan være utilgængelig pga. rettigheder eller tilhørsforhold til en anden virksomhedskontekst.
Ja — især automatiske synkroniseringsjobs og batch-processer kan fejle, hvis de møder ugyldige referencer.
Kun hvis du med sikkerhed ved, at ingen relationer peger på dem — ellers er arkivering eller nøje afhængighedstjek anbefalet.