Feldänderungen in bestimmten Feldern protokollieren
Beschreibung:
Dieser Artikel beschreibt, wie man eine Protokollierung von Feldänderungen, z.B. an Stammdaten und Opt-In Felder, zu einer Auswahl von Feldern (auch in Zusatztabellen) umsetzen kann.
Die Protokollierung wird in einer Zusatztabelle gespeichert und kann darüber auch ausgewertet werden.
Benutzer benötigen keine Zugriffsrechte auf diese Zusatztabelle.
Damit kann dem Transparenzgebot der DSGVO Rechnung getragen werden.
Lösung:
Beim Laden einer Adresse, werden die Feldinhalte aus einer zuvor festgelegten Feld- und Zusatztabellenliste in einer globalen Variable gespeichert.
Beim Speichern werden die global gespeicherten Feldinhalte mit denen der aktuellen Feldern verglichen.
Sollte es Differenzen geben, so wird ein Protokolleintrag erzeugt.
Der Protokolleintrag besteht aus:
Datum+Zeit, Benutzername, Feldname, alter Feldinhalt, neuer Feldinhalt
Im Anhang dieses Knowledgebase Artikels finden Sie das notwendige Makroinclude "RecordChanges.agminc", welches die benötigten Funktionen bereitstellt um die Vorgänge durchzuführen.
Es müssen jedoch noch an drei Positionen Makrozeilen auf Ebene der Adresstabelle ergänzt werden, damit das Makroinclude auch ausgeführt wird.
Position 1:
Beim Öffnen der Adresstabelle wird die Liste der zu überprüfenden Felder über einen simplen Aufruf der Funktion "SetFieldsToCheck()" definiert:
MacroInclude "RecordChanges"
SetFieldsToCheck()
Position 2:
Beim Laden der Adresstabelle werden die Feldinhalte über den Aufruf der Funktion "SaveOriginalValues()" gesichert,
bevor ein Benutzer diese verändern kann.
MacroInclude "RecordChanges"
SaveOriginalValues()
Position 3:
Beim Speichern der Adresstabelle werden letztendlich die Feldinhalte der aktuellen Adresse mit den gespeicherten Feldinhalten
über die Funktion "CheckValueDifference()" verglichen:
MacroInclude "RecordChanges"
CheckValueDifference()
Zusätzlich muss noch eine Zusatztabelle angelegt werden, in denen die Daten protokolliert werden können.
Diese Zusatztabelle ist ebenfalls im Anhang enthalten und muss nur auf Adresstabellenebene importiert werden.
Zum Schluss können Sie die Liste der zu protokollierenden Felder im Makroinclude anpassen.
Es sind bereits sinnvolle Adressfelder vordefiniert, welche Sie jedoch Ihren Wünschen anpassen können.
Hinweis:
Wenn keine Protokollierung gewünscht ist, weil es zum Beispiel keine Zusatztabelle gibt die protokolliert werden muss, so muss eine leere Liste (ein leerer Array) übergeben werden.
Beispiel:
Application.GlobalData("changeWatchRelations")=Array()
Siehe auch Erweiterung um Protokollierung Opt-In Felder und Auslösen der Opt-In Bestätigung
Änderungslog:
27.11.2020:
- Einführung eines Fehler-Modus (IsErrorMode)
17.06.2020:
- Protokollierung von Kennzeichenlisten integriert
22.01.2020:
- Vordefinierte ChangeWatch Array-Feldliste verkleinert.
04.06.2019:
- Dynamisch erzeugte Globale Variablen mit Prefixes versehen.
- Explizite Text-Formatierung der Werte für Globale Variablen.
12.05.2016:
- Kommentar im Makro bezüglich der Zusatztabellenprotokollierung ergänzt.
06.05.2016:
- Protokollierung von Zusatztabellen integriert
Angehängte Dateien: