Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: chock am 06.10.17 - 09:14:47

Titel: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: chock am 06.10.17 - 09:14:47
Hallo Form,

wie kann ich die Abarbeitung einer Formel unterbinden, wenn ein Dokument bereits durch einen anderen Benutzer bearbeitet wird.
Ich habe eine Formel in einer Schaltfläche "Dokument bearbeiten" erstellt.
Die Formal beginnt @Command( [EditDocument] ) und danach werden weitere Felder gesetzt. Diese Abarbeitung soll gestppt werden, wenn das Dokument bereits gesperrt ist. Es kommt die Meldung, dass das Dokument bereits von Benutzer xy bearbeitet wird, aber der Rest der Formel wird weiter ausgeführt.
Gibt es dafür eine Abbruchbedingung?
Danke.

VG Chris
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: Peter Klett am 06.10.17 - 09:47:06
Probier mal ein

@If (!@IsDocBeingEdited; @Return (""); "")

nach dem EditDocument
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: Tode am 06.10.17 - 10:02:28
Ich bin mir grade nicht sicher, aber ich meine, dass @Command([EditDocument]) auch @False liefert... Dann müsste es auch so funktionieren:

@If( @Command([EditDocument] ; 1 ) ; ""; @Return( "" ) )
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: chock am 06.10.17 - 10:44:46
Probier mal ein

@If (!@IsDocBeingEdited; @Return (""); "")

nach dem EditDocument

Geht leider nicht, das @IsDocBeingEdited reagiert nichht in Kombination mit dem Edit Dokument.
Erstelle ich zwei getrennte Schaltflächen eine Edit Dokument und eine zweite mit IsDocBeingEdited funktioniert es. Nur in Kombination in einer Schaltfläche geht es nicht.
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: chock am 06.10.17 - 10:45:09
Ich bin mir grade nicht sicher, aber ich meine, dass @Command([EditDocument]) auch @False liefert... Dann müsste es auch so funktionieren:

@If( @Command([EditDocument] ; 1 ) ; ""; @Return( "" ) )

Liefert leider nichts zurück.
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: thkn777 am 06.10.17 - 12:40:36
Mir fällt spontan Document Locking dazu ein.

Hast Du mal in diese Richtung gedacht?
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: DominoDancing am 06.10.17 - 12:49:18
Hallo Chris, it's Chrismas-time ;D

bei einem hinterlegten Agent '(Test)' (manuell aus der Liste der Agents, Ziel = Keines) mit

   @If(@IsDocBeingEdited; @Prompt([Ok]; "OK"; "OK"); @Return(""));
   @Prompt([Ok]; "2. OK"; "2. OK");
   SELECT @All

zeigt mir meine Schaltfläche mit

   @Command([EditDocument]; "1");
   @Command([ToolsRunMacro]; "(Test)")

beide Prompts an, wenn ich im Autorenfeld hinterlegt bin und keines der beiden Prompts, wenn ich nur im Leserfeld hinterlegt bin. Wenn das Dokument durch einen anderen Nutzer gesperrt ist, zeigt es die Hinweismeldung "Das Dokument wurde bereits gesperrt von ..." an und bricht dann richtig die Bearbeitung ab, ohne die beiden Prompts anzuzeigen. Sollte so also funktionieren.

Ohne die Nutzung eines Agents hat das so nicht funktioniert, da dann immer zuerst @IsDocBeingEdited ausgewertet wurde (= Nein) und danach erst @Command([EditDocument]; "1") durchgeführt wurde. Da auch @PostedCommand anstelle von @Command bei mir keine Wirkung zeigte, hilft bei Dir ja vielleicht auch die Verwendung eines Agents?!

Liebe Grüße
René
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: Peter Klett am 06.10.17 - 13:05:43
Kannst Du die Schaltfläche auf LotusScript umstellen? Da funktioniert das bestimmt

Code
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
If Not uidoc.EditMode Then
   uidoc.EditMode = True
End If
If Not uidoc.EditMode Then
   Exit Sub
End If
'Hier die Aktionen nach dem Umschalten einbauen
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: koehlerbv am 06.10.17 - 13:06:53
Oder man fragt dann gleich die LockHolder Property ab.
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: Peter Klett am 06.10.17 - 13:10:34
Oder man fragt dann gleich die LockHolder Property ab.
Klar, aber es kann auch andere Gründe geben, weshalb man ein Dokument nicht bearbeiten kann, z.B. fehlende Rechte oder eigene interne Steuerungen.
Titel: Re: Formel abbrechen wenn ein Dokument in Bearbeitung ist
Beitrag von: chock am 06.10.17 - 15:19:58
Hallo Chris, it's Chrismas-time ;D

bei einem hinterlegten Agent '(Test)' (manuell aus der Liste der Agents, Ziel = Keines) mit

   @If(@IsDocBeingEdited; @Prompt([Ok]; "OK"; "OK"); @Return(""));
   @Prompt([Ok]; "2. OK"; "2. OK");
   SELECT @All

zeigt mir meine Schaltfläche mit

   @Command([EditDocument]; "1");
   @Command([ToolsRunMacro]; "(Test)")

beide Prompts an, wenn ich im Autorenfeld hinterlegt bin und keines der beiden Prompts, wenn ich nur im Leserfeld hinterlegt bin. Wenn das Dokument durch einen anderen Nutzer gesperrt ist, zeigt es die Hinweismeldung "Das Dokument wurde bereits gesperrt von ..." an und bricht dann richtig die Bearbeitung ab, ohne die beiden Prompts anzuzeigen. Sollte so also funktionieren.

Ohne die Nutzung eines Agents hat das so nicht funktioniert, da dann immer zuerst @IsDocBeingEdited ausgewertet wurde (= Nein) und danach erst @Command([EditDocument]; "1") durchgeführt wurde. Da auch @PostedCommand anstelle von @Command bei mir keine Wirkung zeigte, hilft bei Dir ja vielleicht auch die Verwendung eines Agents?!

Liebe Grüße
René

Die Lösung funktioniert, super danke.

Viele Grüße
Chris