Hi,
bisher habe ich immer die Dokumenthistorie in einer Maske über 2 Felder abgebildet:
HistoryTimes:@If (
@IsNewDoc; @Text(@Now);
@IsDocBeingSaved; HistoryTimes + @NewLine + @Text(@Now);
HistoryTimes
)
HistoryNames:@If (
@IsNewDoc; @Name([CN]; @UserName);
@IsDocBeingSaved; HistoryNames + @NewLine + @Name([CN]; @UserName);
HistoryNames
)
Nachteile: - jedes Zwischenspeichern wird protokolliert
- Liste wird ewig lang bei vielen Änderungen
LösungFolgender Code im Feld HistoryNames:
@If(@IsDocBeingSaved; 0; @Return(HistoryNames));
last_guy := @Subset(HistoryNames; 1);
FIELD HistoryTimes := HistoryTimes;
hist_len := @Elements(HistoryNames);
@If(hist_len = 0;
@Do(
@SetField("HistoryTimes"; @Now);
@Name([CN]; @UserName)
);
last_guy != @Name([CN]; @UserName) | @Subset(HistoryTimes; 1) < @Adjust(@Now; 0;0;0;-12;0;0);
@Do(
@SetField("HistoryTimes"; @Now : @Subset(HistoryTimes; 9));
@Name([CN]; @UserName) : @Subset(HistoryNames; 9)
);
HistoryNames
)Vorteile:- Anzahl Zeilen kann eingeschränkt werden, Default ist hier 10 (siehe Zahl 9 im Code)
- Speicherungen der letzten x Stunden werden nicht protokolliert, Default ist hier
12 Stunden - außer ein anderer User speichert
Hab unten eine nsf angehängt, einfach die Maske öffnen, und die History-Felder per Copy & Paste in eine beliebige Maske übernehmen.
Eine Konfiguration über Setupdokument der Anzahl Zeilen etc. könnte man natürlich auch noch simpelst einbauen....
Grüße,
TMC
Text für Atnotes Volltextsuche:
History
Historie
Änderungshistorie
protokollieren
Änderungen
**EDIT **
Kleinen Fehler korrigiert (Namen erschienen nicht immer in der jew. nächsten Zeile)