Datensatzregeln in Odoo: Sichtbarkeit begrenzen
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
- Legen Sie als Anna eine Chance in der Pipeline an und prüfen Sie, ob Ben sie nicht sieht.
- Weisen Sie die Chance Filiale Süd zu und prüfen Sie, ob sie für Anna verschwindet.
- Prüfen Sie auch Suche, Kanban-Ansicht und Berichte der Testbenutzer auf unerwartet fehlende oder zusätzliche Chancen.
- 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.