Wenn Sie sich jemals gefragt haben, wer ein Feld in einem Odoo-Datensatz geändert hat und wann, ist die Tracking-Funktion Ihre Antwort.
Odoo ermöglicht es Ihnen, Änderungen an bestimmten Feldern zu überwachen und jede Modifikation direkt im Chatter des Datensatzes aufzuzeichnen. Dies gibt den Teams vollständige Sichtbarkeit darüber, wie sich Geschäftsdaten im Laufe der Zeit entwickeln, ohne ein separates Auditsystem aufbauen zu müssen.
Ob Sie Odoo Studio-Felder konfigurieren oder ein benutzerdefiniertes Python-Modul schreiben, das Verständnis dafür, wie das Tracking von Feldern funktioniert, ist ein zentraler Bestandteil der Arbeit mit dem Odoo-Datenmodell. Dieser Leitfaden führt Sie durch alles, was Sie wissen müssen.
Was ist das Tracking-Feld in Odoo
In Odoo ist Tracking kein Feldtyp an sich. Es ist ein Attribut, das Sie für vorhandene Felder aktivieren können, wie Char, Many2one, Auswahl, Integer oder Datumsfelder. Wenn das Tracking für ein Feld aktiv ist, zeichnet Odoo jede Wertänderung im Chatter auf und zeigt den alten Wert, den neuen Wert, das Datum und den verantwortlichen Benutzer an.
Dies erscheint in der Benutzeroberfläche als ein Protokollhinweis im Nachrichtenverlauf des Datensatzes. Zum Beispiel könnte man bei einem CRM-Leads sehen: "Phase geändert von Neu zu Qualifiziert", automatisch protokolliert in dem Moment, in dem ein Vertriebsmitarbeiter den Deal voranbringt.
Das Tracking-Attribut ist für die meisten Standard-Odoo-Feldtypen verfügbar und kann über Odoo Studio oder direkt im Python-Code als Teil eines benutzerdefinierten Odoo-Entwicklungsprojekts aktiviert werden.
Welche Daten werden gespeichert
Jede verfolgte Änderung wird als ein mail.message-Datensatz gespeichert, der mit dem Dokument verknüpft ist. Die Nachricht enthält:
- Das Feldlabel, das sich geändert hat
- Den vorherigen Wert (vor der Änderung)
- Den neuen Wert (nach der Änderung)
- Den Zeitstempel der Modifikation
- Den Benutzer, der die Änderung vorgenommen hat
Diese Historie ist für jeden mit Lesezugriff auf den Datensatz immer sichtbar. Es sind keine zusätzlichen Konfigurationen erforderlich, außer das Tracking für das Feld zu aktivieren.
Wie das Feld funktioniert
Damit das Tracking funktioniert, muss das Modell das mail.thread-Mixin verwenden. Dieses Mixin bietet die Messaging- und Protokollierungsinfrastruktur, die den Chat unterstützt. Die meisten Standard-Odoo-Geschäftsmodelle, einschließlich sale.order, crm.lead, account.move und stock.picking, erben bereits von mail.thread.
Wenn ein Benutzer einen Datensatz speichert, der geänderte verfolgte Felder enthält, vergleicht Odoo die alten und neuen Werte und schreibt automatisch eine Protokollnachricht in den Chat. Vom Benutzer sind keine zusätzlichen Aktionen erforderlich.
Technisches Verhalten im Odoo ORM
Aus technischer Sicht interceptiert das Odoo ORM Schreibvorgänge auf Modellebene. Wenn ein write()-Aufruf ein verfolgtes Feld ändert, erfasst das Framework den vorherigen Wert, wendet die Änderung an und erstellt dann einen mail.message-Datensatz, der den Unterschied beschreibt.
In Python wird das Tracking aktiviert, indem tracking=True zu einer Felddefinition in Ihrer Odoo-Python-Feldkonfiguration hinzugefügt wird:
state = fields.Selection(
[('draft', 'Entwurf'), ('confirmed', 'Bestätigt')],
tracking=True
)
Sie können auch eine Prioritätsnummer von 1 bis 10 verwenden, um die Anzeige-Reihenfolge zu steuern, wenn mehrere verfolgte Felder in derselben Speicheroperation geändert werden. Niedrigere Zahlen erscheinen zuerst in der Protokollnachricht:
partner_id = fields.Many2one('res.partner', tracking=1)
priority = fields.Selection(tracking=10)
Interaktion mit anderen Datensätzen
Verfolgte Änderungen werden direkt im Datensatz gespeichert, in dem sich das Feld befindet. Sie werden nicht automatisch auf verwandte Datensätze übertragen. Wenn Sie das Tracking über verwandte Modelle hinweg wünschen, müssen Sie es separat für jedes Modell aktivieren, wo es wichtig ist.
Das ist so gewollt. Das Odoo-Datenmodell hält die Prüfspur nahe am Objekt, das geändert wird, was es einfach macht, die Historie zu überprüfen, ohne durch mehrere verwandte Datensätze navigieren zu müssen.
Geschäftsanwendungsfälle
Hier sind fünf praktische Beispiele, bei denen die Aktivierung des Feld-Trackings im täglichen Betrieb echten Mehrwert bietet.
1. CRM- und Vertriebs-Pipeline-Management
Vertriebsteams müssen wissen, wann ein Lead von einer Phase in eine andere gewechselt hat und wer diese Änderung vorgenommen hat. Die Aktivierung des Trackings für das stage_id-Feld im CRM-Modul gibt den Managern einen vollständigen Zeitstrahl jeder Statusänderung.
Dies hilft dabei, herauszufinden, wo Geschäfte ins Stocken geraten, unterstützt Pipeline-Überprüfungen und erleichtert das Coaching von Vertriebsmitarbeitern basierend auf tatsächlichen Daten anstelle von Erinnerungen.
2. Genehmigungs-Workflows für Einkäufe und Rechnungen
In der Buchhaltung und Beschaffung erfordert die Einhaltung von Audits oft, dass man weiß, wer ein Dokument genehmigt hat und wann. Die Verfolgung des state-Feldes auf Bestellungen oder Lieferantenrechnungen macht diese Historie sofort im Chat verfügbar, ohne dass ein separates Audit-Modul erforderlich ist.
Dies ist besonders nützlich in Unternehmen, die finanziellen Kontrollen oder internen Audit-Anforderungen unterliegen.
3. Inventar- und Bestandsmanagement
Wenn sich Produktmengen oder Lagerorte unerwartet ändern, hilft die Verfolgung von Feldern bei Bestandsbewegungen oder Produkten den Lagerverwaltern, die Quelle von Abweichungen schnell zu identifizieren.
Anstatt durch Protokolle zu graben oder Kollegen zu fragen, ist die Antwort direkt im Chat des relevanten Datensatzes zu finden.
4. Qualitätsmanagement von Kundendaten
Wenn Ihr Team regelmäßig Kundenakten aktualisiert, können Sie Änderungen an kritischen Feldern wie email, phone oder pricelist_id im Partner-Modell verfolgen. Dies hält eine Historie von Änderungen der Kontaktdaten direkt im CRM, was für Kundenserviceteams und Datenqualitätsüberprüfungen nützlich ist.
5. HR- und Mitarbeiterakten
Die Verfolgung von Änderungen an Feldern wie Stellenbezeichnung, Abteilung oder Gehaltsstufe in Mitarbeiterakten gewährleistet eine transparente Historie aller Änderungen. Dies ist wichtig für die HR-Compliance in vielen Branchen und erleichtert interne Audits erheblich.
Erstellen oder Anpassen des Tracking-Feldes
Es gibt zwei Hauptmethoden, um die Verfolgung eines Feldes in Odoo zu aktivieren: die Verwendung von Odoo Studio für einen No-Code-Ansatz oder das Schreiben von Python-Code für eine vollständig technische Implementierung.
Odoo Studio verwenden
Odoo Studio macht es einfach, die Verfolgung vorhandener Felder ohne Programmierung zu aktivieren. Öffnen Sie Studio im entsprechenden Modell, klicken Sie auf das Feld, das Sie überwachen möchten, und suchen Sie im Einstellungsbereich des Feldes nach dem Änderungen verfolgen-Schalter.
Sobald die Verfolgung aktiviert ist, erscheinen alle zukünftigen Änderungen an diesem Feld im Chatter. Dies ist der empfohlene Ansatz für Administratoren und Geschäftsbenutzer, die die Verfolgung als Teil ihres Odoo-Anpassungsworkflows hinzufügen möchten, ohne einen Entwickler einzubeziehen.
Die gleiche Studio-Oberfläche kann verwendet werden, wenn Sie Felder in Odoo von Grund auf neu erstellen. Beim Hinzufügen eines neuen benutzerdefinierten Feldes über Studio können Sie die Verfolgung direkt während der Erstellung des Feldes aktivieren.
Verwendung von Python in einem benutzerdefinierten Modul
Für Entwickler, die Module erstellen oder erweitern, wird das Verfolgungsattribut direkt in der Felddefinition der Modellklasse hinzugefügt. Dies ist gängige Praxis in jedem Odoo-Entwicklerhandbuch oder technischen Tutorial.
Das Modell muss außerdem von mail.thread erben, damit die Verfolgung Wirkung zeigt. Hier ist ein minimales Beispiel:
from odoo import models, fields
class ProjectTask(models.Model):
_name = 'project.task'
_inherit = ['project.task', 'mail.thread']
x_client_priority = fields.Selection(
[('low', 'Niedrig'), ('medium', 'Mittel'), ('high', 'Hoch')],
string='Kundenpriorität',
tracking=True
)
Dies ist ein typisches Muster, wenn Sie ein bestehendes Modell im Rahmen eines Odoo-Entwicklungsprojekts erweitern müssen. Das Feld verhält sich wie jeder andere Odoo-Datenbankfeldeintrag, aber jetzt wird jede Änderung seines Wertes automatisch aufgezeichnet.
Wichtiger Hinweis zu benutzerdefinierten Modellen
Beim Erstellen völlig neuer benutzerdefinierter Modelle stellen Sie sicher, dass Sie _inherit = ['mail.thread', 'mail.activity.mixin'] in Ihrer Modelldefinition einfügen. Andernfalls wird das Verfolgungsattribut stillschweigend ignoriert und keine Änderungen werden im Chatter aufgezeichnet.
Dies ist ein Punkt, der viele Entwickler verwirrt, die zum ersten Mal ein Odoo-Feldtutorial befolgen. Das Mixin ist nicht optional, wenn Sie möchten, dass die Verfolgung funktioniert.
Best Practices
Das Verfolgen von Feldern ist einfach einzurichten, aber leicht missbräuchlich zu verwenden. Diese Richtlinien helfen Ihnen, das Beste aus dieser Funktion herauszuholen.
Nur Felder verfolgen, die wichtig sind
Das Aktivieren des Trackings für jedes Feld erzeugt Lärm im Chat und erschwert das Finden relevanter Historien. Konzentrieren Sie sich auf Felder, die wirklich nützlich für die Prüfung sind: Zustände, Phasen, verantwortliche Benutzer, wichtige Daten und finanzielle Werte.
Verwenden Sie Prioritätsnummern für Klarheit
Wenn mehrere Felder im selben Modell verfolgt werden, verwenden Sie Prioritätsnummern von 1 bis 10, um zu steuern, wie Änderungen in der Protokollnachricht gruppiert werden. Dies verbessert die Lesbarkeit im Chat, insbesondere bei Modellen mit vielen verfolgten Feldern.
Kombinieren Sie mit Zugriffsrechten
Tracking ist am nützlichsten, wenn es mit geeigneten Aufzeichnungsregeln und Zugriffskontrollen kombiniert wird. Es hat wenig Wert, eine Prüfspur aufrechtzuerhalten, wenn jeder im System sie frei ändern kann. Sichern Sie Ihr Datenmodell, bevor Sie sich auf den Chat als Prüfmechanismus verlassen.
Dokumentieren Sie Ihre verfolgten Felder
Führen Sie eine klare Aufzeichnung darüber, welche Felder das Tracking aktiviert haben, insbesondere in gemeinsamen oder Multi-Entwickler-Projekten. Dies vermeidet Verwirrung während der Code-Überprüfungen und verhindert versehentliches Doppel-Tracking nach Modul-Upgrades.
Testen Sie vor dem Live-Gang
Überprüfen Sie immer das Tracking-Verhalten in einer Testumgebung, bevor Sie in die Produktion gehen. Einige Feldtypen, insbesondere berechnete oder verwandte Felder, können sich anders verhalten als standardmäßig gespeicherte Felder, wenn das Tracking beteiligt ist.
Häufige Fallstricke
Dies sind die häufigsten Fehler, die beim Arbeiten mit Feldtracking in Odoo auftreten.
Vergessen, von mail.thread zu erben
Dies ist das häufigste Problem. Wenn ein benutzerdefiniertes Modell nicht von mail.thread erbt, wird das Tracking-Attribut stillschweigend ignoriert. Es wird kein Fehler ausgegeben und keine Protokollnachrichten erscheinen im Chatter. Überprüfen Sie immer die Vererbungskette des Modells, wenn das Tracking nicht zu funktionieren scheint.
Tracking von nicht gespeicherten berechneten Feldern
Berechnete Felder können verfolgt werden, aber nur, wenn sie mit store=True gespeichert werden. Ein nicht gespeichertes berechnetes Feld hat keinen persistenten Wert in den Odoo-Datenbankfeldern, sodass es nichts gibt, was man vor und nach einer Änderung vergleichen könnte. Wenn Sie versuchen, ein nicht gespeichertes berechnetes Feld zu verfolgen, hat das Tracking stillschweigend keine Wirkung.
Aktivierung des Trackings für zu viele Felder
Es ist verlockend, das Tracking überall zu aktivieren, um die Transparenz zu maximieren. In der Praxis überfüllt dies den Chatter und macht es tatsächlich schwieriger, bedeutungsvolle Änderungen zu finden. Seien Sie selektiv und konzentrieren Sie sich auf Felder mit echtem Prüf- oder Betriebswert.
Erwartung von Tracking bei Bulk- oder direkten SQL-Operationen
Das Tracking wird über das Odoo ORM ausgelöst, wenn Datensätze mit der Standardmethode write() geändert werden. Direkte SQL-Updates, Bulk-Importe, die das ORM umgehen, oder bestimmte Low-Level-API-Aufrufe lösen kein Tracking aus. Wenn Sie die XML-RPC-API oder Batch-Operationen verwenden, stellen Sie sicher, dass die Schreibvorgänge über die ORM-Schicht erfolgen.
Konflikte zwischen Studio- und Python-Definitionen
Wenn ein Feld ursprünglich in Odoo Studio mit aktiviertem Tracking erstellt und konfiguriert wurde, seien Sie vorsichtig, wenn Sie dasselbe Feld auch in einem Python-Modul ändern. Konfliktierende Definitionen zwischen Studio und Code können während Modul-Upgrades oder Datenbankaktualisierungen zu unerwartetem Verhalten führen.
FAQ
Kann ich ein Feld in jedem Modell in Odoo verfolgen?
Nur Modelle, die von mail.thread erben, unterstützen das Feld-Tracking. Die meisten Standardgeschäftsmodelle in Odoo enthalten bereits dieses Mixin, aber benutzerdefinierte Modelle müssen es ausdrücklich in ihrer Klassendefinition deklarieren.
Wird die Aktivierung von Tracking die Leistung beeinträchtigen?
Die Auswirkungen sind für die meisten Anwendungsfälle minimal. Jede verfolgte Änderung erstellt einen mail.message-Datensatz, was einen kleinen Overhead für die Schreiboperation hinzufügt. Bei sehr hochvolumigen Transaktionsmodellen sollten Sie darüber nachdenken, wie viele Felder Sie verfolgen, um eine übermäßige Anzahl von Protokolleinträgen zu vermeiden.
Kann ich das Tracking für ein Feld deaktivieren, ohne die vorhandene Historie zu verlieren?
Ja. Das Deaktivieren des Trackings stoppt die Aufzeichnung neuer Änderungen, aber alle vorhandenen Protokollnachrichten im Chat bleiben zugänglich. Die bereits erfasste Historie wird bewahrt und nicht gelöscht.
Funktioniert das Tracking bei Many2many-Feldern?
Das Tracking von Many2many-Feldern wird in Odoo unterstützt. Der Chat zeigt an, welche Datensätze aus der Beziehung hinzugefügt oder entfernt wurden, anstatt einen Vorher- und Nachher-Wert anzuzeigen. Es funktioniert, aber beachten Sie, dass das Anzeigeformat sich von einfachen Wertfeldern unterscheidet.
Kann ich Tracking ohne Odoo Studio verwenden?
Absolut. Der tracking-Parameter ist ein standardmäßiges Python-Feldattribut im Odoo-Framework. Sie können ihn in jedem benutzerdefinierten Modul aktivieren, ohne Studio zu verwenden. Studio bietet lediglich eine visuelle, codefreie Schnittstelle für dieselbe zugrunde liegende Funktionalität. Dies ist ein Standardbestandteil jedes Odoo-Feld-Tutorials oder Odoo-Entwicklerhandbuchs.
Fazit
Das Tracking-Attribut ist eines dieser Odoo-Features, das stillschweigend viel Wert hinzufügt, ohne viel Einrichtung zu erfordern. Durch die Aktivierung auf den richtigen Feldern geben Sie Ihrem Team eine zuverlässige Prüfspur, reduzieren Streitigkeiten darüber, wer was geändert hat, und schaffen eine Grundlage für eine bessere Datenverwaltung in Ihrer Organisation.
Ob Sie es über Odoo Studio für eine schnelle, codefreie Einrichtung konfigurieren oder es über ein benutzerdefiniertes Python-Modul im Rahmen eines umfassenderen Odoo-Entwicklungs- oder Odoo-Anpassungsprojekts implementieren, das Ergebnis ist dasselbe: volle Sichtbarkeit darüber, wie sich Ihre Geschäftsdaten im Laufe der Zeit ändern.
Der Schlüssel liegt darin, zu wissen, wo man es anwenden kann. Konzentrieren Sie sich auf die Felder, die Entscheidungen, Genehmigungen und Verantwortlichkeit in Ihren Arbeitsabläufen vorantreiben, und Sie werden den größten Teil des Wertes mit sehr wenig Aufwand erhalten.
Bei Dasolo helfen wir Unternehmen, Odoo zu implementieren, anzupassen und zu optimieren, um ihren spezifischen Geschäftsprozessen gerecht zu werden. Egal, ob Sie Hilfe bei der Gestaltung Ihres Datenmodells, der Aktivierung des Feldtrackings in Ihren Arbeitsabläufen oder beim Erstellen benutzerdefinierter Module von Grund auf benötigen, unser Team ist hier, um Sie zu unterstützen.
Kontaktieren Sie uns noch heute, um Ihre Odoo-Implementierung zu besprechen. Kontaktieren Sie uns und lassen Sie uns gemeinsam den besten Ansatz für Ihr Projekt finden.