Hallo Forum,
folgendes Problem, etwas schwierig zu beschreiben.
In einer DB werden mehrere Dokumente bearbeitet, während der Bearbeitung bestimmte Docs in einer speziellen Collection gesammelt und anschließend die Dokumente der DC gelöscht. Es kann nun vorkommen, dass 1.) ein Doc der DC im UI geöffnet, aber nicht aktiv ist und/oder 2.) ein Doc der DC in der Vorschau geöffnet ist.
Beide Fälle haben für mich so Ihre Fallen, in die ich gerade stolpere, bezogen auf die Dokumentlöschung.
Zu Fall 1.) In diesem Fall kann ich das Backend Doc nicht löschen, da es im UI "irgendwo" offen ist (können ja im UIWS noch mehrere ganz andere Dokumente offen sein). Leider kann ICH das betroffene UI Doc auch nicht gezielt schließen, da mir kein Weg bewusst ist vom backend Doc genau auf dessen geöffnetes UI Doc zuzugreifen. Für diesen Fall bräuchte ich also entweder einen Weg das Backend Doc dennoch zu löschen, oder gezielt auf das davon geöffnete UIDoc zuzugreifen um es zu schließen.
Zu Fall 2.)Dieser Fall hat wiederum 2 Ausprägungen:
Um festzustellen ob ein Dokument der DC ÜBERHAUPT offen ist, kann ich nur die "IsUIDocOpen" Eigenschaft abfragen. Wenn diese zutrifft, kann es nun vorkommen, dass entweder das UIDoc irgendwo geöffnet ist (Fall 1) oder, dass es gerade in der PreviewPane sichtbar ist. OB ein Dokument ÜBERHAUPT in der Preview angezeigt ist, kann ich wiederum nur mit den 2 folgenden Schritten feststellen. 1: uidoc= uiws.CurrentDocument, 2. uidoc.InPreviewPane = ?
Da es aber bei diesem Vorgang nicht unbedingt sicher ist, dass das aktuelle Doc der Previewpane auch in meiner DC gesammelt wurde (In der Preview kann ja ein ganz anderes Dokument angezeigt werden, als eines der, die ich tatsächlich zu Beginn der Bearbeitung mit der Maus markiert habe. Das ist z.B. der Fall, wenn die DB gerade geöffnet wurde, das erste Dokument automatisch in der Preview angezeigt wird, der Benutzer aber mit der Maus die folgenden x Dokumente markiert OHNE das aktuelle mit einzuschließen.) brauche ich hier irgendeinen Weg um herauszufinden ob das UIDoc der Preview auch in meiner DC der bearbeiten Doks ist. Wenn das zutrifft, kann ich das UIDOC löschen und anschließend den UIWorkspace refreshen = Dok "weg". Wenn das UIDoc nicht in meiner DC ist, ist es ein ganz anderes Doc und ich ignoriere es. Wie ginge diese Filterung, denn ein Dokument in der Preview kann ich nicht einfach schließen? Schließe ich das UIDoc aus der Preview geht die ganze DB zu..
Diesen ganzen 2. Fall könnte ich mir sparen (mit der Identifikation ob das PreviewDoc auch wirklich eins der bearbeiten Docs ist und wenn ja, die "frontend Löschung") wenn ich zu Beginn der ganzen Sache einfach schnell die Preview schließen und am Ende wieder öffnen könnte. Dann bliebe nämlich nur noch Fall 1 und der Benutzer kann während des Script-Laufs eh nichts machen und braucht daher derweil auch die Preview nicht. Ginge das irgendwie?
Ich hoffe ich konnte meine Probleme irgendwie vereinfacht darstellen. Beide Fälle sind unterschiedlich, treten aber in demselben Bearbeitungsschritt auf und brechen mir umfangreich die Beine.
Entweder kann ich die Dokumente nicht korrekt löschen weil sie irgendwo offen sind, oder es wird auch noch ein "unschuldiges" Dokument mitgelöscht, nur weil es gerade in der Preview war und gar nix mit der Prozedur zu tun hatte…
Viele Dank schon mal für Eure Hilfe!
Bis dann,
-Moritz