DE · AT · CHAnleitung

Datensatzregeln in Odoo: Sichtbarkeit begrenzen

Aktualisiert:

Gilt für: Odoo 20.0 Community, On-Premise; Aufbau, Menüweg, Beispiel nur aus dem Quellcode, Dokumentation weicht ab; Enterprise, Online, Odoo.sh ungeprüft

Kurz gesagt

Datensatzregeln begrenzen in Odoo 20.0, welche Datensätze ein Benutzer sieht oder ändert. Im Community-Quellcode 20.0 erlauben Zugriffsrechte-Einträge mit Gruppe (Permission) und schränken Einträge ohne Gruppe (Restriction) ein; Enterprise, Odoo Online und Odoo.sh haben wir nicht geprüft. Sie legen sie als Administrator im Entwicklermodus an und testen sie.

Das Wichtigste

  • Im Community-Quellcode 20.0 gilt der Zugriff als ODER aller Permissions UND aller Restrictions; ohne passende Permission besteht kein Zugriff.
  • Die Dokumentation 20.0 trennt Modellrechte und Record Rules (globale Regeln schneiden sich, Gruppenregeln vereinen sich); der Community-Quellcode fasst beides in Zugriffsrechten zusammen.
  • Eine Restriction gilt für normale Zugriffe aller Benutzer; der Superuser-Modus umgeht laut Dokumentation 20.0 Datensatzregeln und Zugriffsrechte.
  • Standard-Einträge von Odoo sind schreibgeschützt; Customize legt laut Quellcode eine Kopie an und archiviert das Original.
  • Mehrere Unternehmen und Zweige in einer Datenbank trennen Datensätze bereits ohne eigene Regel; laut Dokumentation löst das auf dem Plan Standard ein Upsell auf Custom aus.

Eine Datensatzregel legt fest, welche Datensätze eines Modells ein Benutzer lesen, ändern, anlegen oder löschen darf. Sie ergänzt die Gruppen der Benutzer: Die Gruppe öffnet das Modell, die Regel begrenzt, welche Zeilen daraus sichtbar sind. Dieser Artikel beschreibt Odoo 20.0 und rechnet eine Regel für die Trennung von Filialen durch.

Was Sie vorab brauchen

  • ein Benutzer mit Administratorrechten (laut Dokumentation 20.0 kann nur ein Administrator Zugriffsrechte ändern), der den Entwicklermodus aktivieren kann; das Menü Technisch ist laut Quellcode nur im Entwicklermodus sichtbar Die Dokumentation 20.0 rät, Änderungen an Zugriffsrechten vorab mit einem Odoo Business Analyst oder dem Support abzustimmen.
  • eine Testdatenbank (Duplikat) und zwei Testbenutzer je Filiale
  • den technischen Namen des Modells, das Sie begrenzen (hier crm.lead für Leads und Verkaufschancen)
  • Kenntnis einfacher Domänenausdrücke (Bedingungen als Liste in eckigen Klammern)

So arbeiten Regeln zusammen

Die Entwicklerdokumentation 20.0 beschreibt Modellrechte (ir.model.access) und Regeln (ir.rule) getrennt. Globale Regeln, also solche ohne Gruppe, schneiden sich: jede muss erfüllt sein. Gruppenregeln vereinen sich: es genügt eine. Mehrere globale Regeln können sich so widersprechen, dass kein Datensatz mehr sichtbar ist.

Im Community-Quellcode 20.0 sind Modellrechte und Regeln in einem Modell zusammengeführt, das die Oberfläche Zugriffsrechte nennt. Ein Eintrag mit Gruppe heißt dort Permission, einer ohne Gruppe Restriction. Der Zugriff auf einen Datensatz besteht, wenn mindestens eine Permission des Benutzers zutrifft und alle Restrictions zutreffen; ohne passende Permission besteht kein Zugriff. Der Hilfetext sagt: Restrictions gelten global und lassen sich nicht umgehen, wobei die Dokumentation den Superuser-Modus als Ausnahme nennt. Die Dokumentation 20.0 beschreibt die Oberfläche noch mit der Registerkarte Record Rules in der Gruppe; welche Oberfläche Ihre Datenbank zeigt, prüfen Sie in der Testdatenbank.

Schritt für Schritt: Eine Regel anlegen

Schritt 1: Prüfen, ob Unternehmen oder Zweige genügen

Sind Ihre Filialen eigene Unternehmen oder Zweige unter einem Mutterunternehmen, trennt Odoo Angebote, Rechnungen und Lieferantenrechnungen laut Dokumentation 20.0 schon ohne eigene Regel; ein Benutzer kann auf einen Zweig begrenzt werden. Produkte und Kontakte sind standardmäßig geteilt, lassen sich aber über das Feld Company auf ein Unternehmen begrenzen. Das Modul CRM enthält im Quellcode 20.0 eine solche Einschränkung nach Unternehmen für Leads (Eintrag crm_lead_company_rule). Mehrere Unternehmen lösen auf dem Plan Standard laut Dokumentation einen Upsell auf Custom aus.

Schritt 2: Modell und Vorgänge festlegen

Wählen Sie das Modell und die Vorgänge (Create, Read, Update, Delete). Den technischen Namen zeigt das Feld Modell; die Dokumentation 20.0 beschreibt außerdem einen Weg über das Namensfeld und das Symbol für den internen Link.

Schritt 3: Domäne formulieren

Die Domäne ist eine Bedingung auf den Feldern des Modells. In der Auswertung stehen laut Quellcode die Variablen user, time, company_ids und company_id bereit.

Schritt 4: Eintrag anlegen

Öffnen Sie im Entwicklermodus Einstellungen ▸ Technisch ▸ Sicherheit ▸ Zugriffsrechte und wählen Sie Neu. Tragen Sie Name, Modell, Gruppe (leer für eine Einschränkung), die Vorgänge und das Feld Domain ein. Standard-Einträge von Odoo sind schreibgeschützt. Mit Customize legt Odoo eine Kopie an und archiviert das Original; ändern Sie Standard-Einträge nicht, sondern ergänzen Sie eigene.

Schritt 5: Mit Testbenutzern prüfen

Melden Sie sich in der Testdatenbank mit den Testbenutzern an und prüfen Sie Liste, Suche, Anlegen und Ändern. Die Dokumentation rät, immer zu testen, dass die Einstellungen die richtigen Benutzer treffen.

Durchgerechnetes Beispiel: Filialtrennung bei Verkaufschancen

Das folgende Beispiel ist erfunden (Filiale Nord, Filiale Süd) und ein redaktioneller Vorschlag, den Odoo nicht dokumentiert. Die Felder team_id (Verkaufsteam der Chance) und member_ids (Mitglieder des Teams) gibt es im Quellcode 20.0; member_ids ist durchsuchbar.

Ziel: Jede Filiale ist ein Verkaufsteam, und Benutzer sehen Chancen nur, wenn sie Mitglied des Teams der Chance sind oder die Chance kein Team hat. Annahme: Alle vier Benutzer haben in der App Verkauf die Stufe „Benutzer: Alle Dokumente“; mit „Benutzer: Nur eigene Dokumente“ sähen sie laut Standardeintrag nur eigene oder nicht zugewiesene Chancen, auch innerhalb ihres Teams.

Feld Wert
Name Filialtrennung Verkaufschancen
Modell crm.lead
Gruppe leer (Restriction, gilt für alle Benutzer)
Vorgänge Create, Read, Update, Delete
Domäne [’

Die Auswirkung im Beispiel:

Benutzer Mitglied von Sieht
Anna Filiale Nord Chancen der Filiale Nord und Chancen ohne Team (Stufe Alle Dokumente)
Ben Filiale Süd Chancen der Filiale Süd und Chancen ohne Team
Carla (Leitung) Nord und Süd (erfordert die Einstellung Mehrere Teams unter CRM ▸ Konfiguration ▸ Einstellungen) Chancen beider Filialen und Chancen ohne Team
Dirk (Administrator, in keinem Team) keinem Team nur Chancen ohne Team

Zwei Folgen verlangen Aufmerksamkeit. Erstens gilt die Einschränkung für alle Benutzer, auch für Leitungen: Wer alles sehen soll, muss Mitglied aller Teams sein. Zweitens bleiben Chancen ohne Team für alle sichtbar; wer das nicht will, entfernt die Bedingung (‘team_id’, ‘=’, False) und muss prüfen, dass jede Chance ein Team erhält. Die Einschränkung wirkt zusätzlich zu den Berechtigungen der Gruppen, etwa dem Standardeintrag Personal Leads; sie erweitert nichts, sondern begrenzt, was diese erlauben.

So prüfen Sie das Ergebnis

  1. Legen Sie als Anna eine Chance in der Pipeline an und prüfen Sie, ob Ben sie nicht sieht.
  2. Weisen Sie die Chance Filiale Süd zu und prüfen Sie, ob sie für Anna verschwindet.
  3. Prüfen Sie auch Suche, Kanban-Ansicht und Berichte der Testbenutzer auf unerwartet fehlende oder zusätzliche Chancen.
  4. Legen Sie eine Chance ohne Team an und prüfen Sie, wer sie sieht.

Wenn etwas nicht klappt

Symptom Mögliche Ursache Prüfung oder Lösung
Benutzer sieht nichts mehr Zwei Einschränkungen schließen sich aus oder die Domäne passt auf nichts Eintrag deaktivieren und Domäne in der Testdatenbank prüfen
Benutzer sieht mehr als erwartet Eine Berechtigung mit Gruppe erlaubt mehr, und Berechtigungen vereinen sich Gruppen des Benutzers und deren Einträge prüfen
Speichern der Regel schlägt fehl Ungültige Domäne Feldnamen und Klammern prüfen; Odoo validiert die Domäne beim Speichern
Administrator kann Einträge nicht mehr ändern Zugriff auf die Administration entfallen Dokumentation warnt vor dem Zustand; Support kontaktieren

Wann Sie Hilfe holen sollten

Holen Sie sich Unterstützung, bevor Sie Einschränkungen auf Modelle ohne Testmöglichkeit legen, mehrere Einschränkungen auf demselben Modell kombinieren oder Standard-Einträge von Odoo ändern. Zur Benutzerverwaltung: Benutzer anlegen und Gruppen zuweisen.

Häufige Fragen

Gilt eine Datensatzregel auch für Administratoren?

Ja. Eine Restriction ohne Gruppe gilt laut Hilfetext im Community-Quellcode 20.0 für alle Benutzer. Ausgenommen ist der Superuser-Modus: Er umgeht laut Dokumentation 20.0 Datensatzregeln und Zugriffsrechte und steht nur Benutzern mit Einstellungs-Zugriff auf die Administration offen. Die Dokumentation warnt, dass er den Zugriff auf die Datenbank sperren kann.

Reicht es nicht, Filialen als eigene Unternehmen anzulegen?

Oft ja, wenn jede Filiale ein eigenes Unternehmen oder ein Zweig ist: Dann sind Angebote, Rechnungen und Lieferantenrechnungen laut Dokumentation 20.0 nur im jeweiligen Unternehmen sichtbar, Produkte und Kontakte standardmäßig geteilt. Mehrere Unternehmen lösen auf dem Plan Standard laut Dokumentation einen Upsell auf Custom aus.

Gilt das auch für Enterprise, Odoo Online und Odoo.sh?

Die Dokumentation 20.0 beschreibt Datensatzregeln (Record Rules) als Teil der Zugriffsrechte, aber mit anderer Oberfläche als der Community-Quellcode. Menüweg, Permission und Restriction belegen wir hier nur für den Community-Quellcode. Für Enterprise, Odoo Online und Odoo.sh prüfen Sie Menü und Eingabe in einer Testdatenbank.

Quellen

  1. Access rights (Odoo 20.0)Odoo S.A., Dokumentation · abgerufen am
  2. Security in Odoo (Odoo 20.0, Entwicklerreferenz)Odoo S.A., Dokumentation · abgerufen am
  3. Companies, Abschnitt Branches (Odoo 20.0)Odoo S.A., Dokumentation · abgerufen am
  4. Multi-company (Odoo 20.0)Odoo S.A., Dokumentation · abgerufen am
  5. Modell ir.access (odoo/addons/base/models/ir_access.py), Branch 20.0 des Repositorys odoo/odooOdoo S.A., GitHub · abgerufen am
  6. Ansichten und Hilfetext zu ir.access (odoo/addons/base/views/ir_access_views.xml), Branch 20.0Odoo S.A., GitHub · abgerufen am
  7. Menü Security (odoo/addons/base/views/base_menus.xml), Branch 20.0Odoo S.A., GitHub · abgerufen am
  8. Zugriffsrechte des Moduls crm (security/ir.access.csv), Branch 20.0Odoo S.A., GitHub · abgerufen am
  9. Modell crm.team, Feld member_ids (addons/sales_team/models/crm_team.py), Branch 20.0Odoo S.A., GitHub · abgerufen am
  10. Deutsche Übersetzung des Moduls base (odoo/addons/base/i18n/de.po), Branch 20.0Odoo S.A., GitHub · abgerufen am
  11. Packaged installers (Odoo 20.0)Odoo S.A., Dokumentation · abgerufen am
  12. Release Notes (Version 20, veröffentlicht im September 2026)Odoo S.A. · abgerufen am