Hallo,
danke für Eure Antworten. Das mit dem Lösch-Flag war meine erste Lösung, die ich so schon seit Jahren in meinen Datenbanken mit einer extra Papierkorb-Ansicht einsetze:
FIELD form := "Deleted " + FormFür den Restore gibt's dann:
FIELD form := @Right(Form; " ")Und dann noch eine entsprechende Form-Formula in der Papierkorbansicht, damit man die gelöschten Dokumente öffnen kann.
@Right(Form; " ")Das Löschen im Papierkorb kann ich dann entweder mit einer Rolle oder noch einfacher über das "Dokumente löschen"-Flag in der ACL steuern.
Soweit so gut.
Das Ganze wir allerdings immer mit einem extra Löschen-Button aktiviert und nicht mit der ENTF-Taste. Die Anforderung vom Kunden war aber explizit, dass das Ganze über die ENTF-Taste, wie das "normale" Löschen passieren soll. Also erst mit einem x als zu löschend markiert und dann mit F9 ganz weg (in den Papierkorb, nicht aus der Datenbank).
Und da liegt auch das Problem: Wenn das Loschen-x erscheinen soll, kann ich mit QueryDocumentDelete nicht viel machen, weil die Benutzer ja das x wieder wegmachen können.
Also bin ich in den PostDocumentDelete gegangen, aber da ist es schon zu spät. Ich kann zwar noch auf die Dokumente zugreifen, aber eigentlich sind sie schon nicht mehr da. Ich bin dann auf die gloreiche Idee gekommen einfach schnell eine Kopie zu machen und die dann in den Papierkorb zu schieben. Da ich für Verknüpfungen mit einem eigenen Key-Konzept arbeite und nicht mit den DocumentUniqueId's macht es nichts, wenn die UnID eine andere ist.
Das ging auch eine ganze Weile ganz gut. Bis einer ein Dokument löschen wollte, für das er nur Lese-, aber keine Schreib-Rechte hat. Der Agent hat dann ganz toll eine Kopie des Dokuments in den Papierkorb gemacht. Und weil die Benutzer ja alles austesten, hat er natürlich gleich wieder einen Restore im Papierkorb gemacht.
Diese Möglichkeit hatte ich übersehen, und jetzt brauche ich halt eine andere Lösung.
Gruß,
Joachim
P.S.:
Ich glaube als Entwickler kann man nie so verquer denken, wie ein Endanwender
Es gibt praktisch nichts, was die nicht versuchen. War natürlich dumm von mir, diesen Fall nicht zu berücksichtigen, aber manche Bugs findet halt leider doch erst der Kunde...