Dokumente sollen nicht mehr abänderbar u. kopierbar sein

  • Hallo Ihr Lieben,


    ich hab mal wieder ein "Formel"-Problem. Wie bekomm ich's hin, dass nach Abschluß eines Workflows die Dokumente nicht mehr zu ändern und auch nicht zu kopieren sind? Aber zum Lesen für alle bereitstehen.
    Ich kann allerdings absolut kein Script !!!
    Also wäre ich für eine Lösung in Fromelsprache super dankbar!!!


    Liebe Grüße
    Gaby
    :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-?

  • Was das Kopieren angeht: entweder du setzt das Feld $KeepPrivate auf 1 oder -wenn du 6er Server und Clients hast- nimmst du den Haken "Dokumente replizieren oder kopieren" in der ACL raus.


    Beim Speichern kommst du ohne LS nicht hin. Ist aber ein einfacher 3-Zeiler. Im QuerySave-Event fragst du ein Feld ab, das kennzeichnet, ob der Workflow abgeschlossen ist. Wenn ja, dann kommt ein continue=False dran. Also z.B.
    Dim doc As NotesDocument
    Set doc = Source.Document
    if doc.erledigt="Ja" then
    continue=False
    end if

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Beides ist nicht. In LS kannst du per 'Evaluate' zwar Formeln abfackeln. Aber andersrum tut das AFAIK nicht.


    Formel raus, in LS umschreiben, QuerySave-Event zurück auf LS stellen und fertig...

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • ... na dann hab ich'n Problem, ich kann kein Script und die Formel brauch ich an der Stelle....


    Autorenfelder helfen mir auch nicht wirklich weiter, die Dokumente sollen selbst von den Erstellern nicht mehr geändert werden können....


    Vielen Dank aber trotzdem!!

  • Hallo,


    ich verwende für Workflows im allgemeinen Autorenfelder. Das hat zum einen den Vorteil, daß je nach Workflowschritt immer nur die betroffene(n) Person(en) das Dokument ändern können und beim Abschluss des Workflows kann man solche Felder ja auch leeren, so daß niemand mehr das Dokement bearbeiten kann.


    Hab aber auch in der Regel ein Autor-Feld in jeden Dok, in dem die Rolle "[Admin]" steht, damit diese jedes Dokument zu jeder Zeit bearbeiten können. Das hängt aber von der Anwendung ab, ob das gewünscht oder erforderlich ist.


    Alternativ könntest du im QueryModeChange verhindern, daß jemand das Dokument in den Editmode setzt. Das funktioniert natürlich nur im Frontend. Also mit einem Agent könnte man das Dokument noch ändern.


    Beispiel:
    Sub Querymodechange(Source As Notesuidocument, _
    Continue As Variant)
    If Not ( source.EditMode ) Then
    currentStatus = source.FieldGetText( "Status" )
    If ( currentStatus = "Closed" ) Then
    Messagebox _
    ( "Document available for browsing only." )
    continue = False
    End If
    End If
    End Sub


    Gruß
    Dirk Mika

    Um wirklich Erfolg im Leben haben zu können, muß man 2 Regeln stets befolgen:


    1. Erzähl nicht alles, was du weißt.

  • ... okay, ich versuch's mal mit Autorenfeldern, denn wie schon gesagt, Script ist nicht mein Ding, da versteh ich nix...


    Vielen Dank nochmal für die Hilfe!!


    Liebe Grüße
    Gaby

  • Hallo,


    ich hab das nun tatsächlich hinbekommen mit dem Querymode, das das Dokument nicht mehr in den Bearbeitenmodus gestellt werden kann, weder über Schaltfläche (Bearbeiten) noch per Doppelklick.... A B E R, wenn das Dokument in der Ansicht mit der rechten Maustaste angeklickt wird und über dieses Kontextmenü "bearbeiten" ausgewählt wird, kann es beliebig abgeändert werden. Hat jemand eine Ahnung wie ich das auch noch verhindern kann???


    Tausend Dank für Eure Hilfe


    Gaby

  • Der Parameter Mode gibt dir an in welchem Modi jemand versucht das Dokument zu öffnen.
    Steht dieser nun auf Edit und er darf es nicht (siehe dein Script für QueryModeChange) dann gibst du halt ne Meldung aus und setzt Continue auf false

  • .... sorry, ich hatte einfach nur das kopiert was 3 Antworten vorher im Post hier steht und die Feldnamen auf meine abgeändert. Was ich da getan habe - keine Ahnung - es funktioniert... naja bis auf das Kontextmenü.... Ich war auch so schlau oder eher dumm das gleiche in Queryopen zu kopieren aber das gefällt ihm gar nicht und wirft erst ne Fehlermeldung raus, dann komm ich ins Dokument und kann Ändern wie gehabt. Deshalb meine Bitte: was schreib ich in Queryopen rein, damit das Bearbeiten über das Kontextmenü nicht mehr funktioniert und, muß ich das im Queryopen der Eingabemaske oder im Queryopen der Ansicht reinschreiben?


    Lieben Gruß
    Gaby

  • Gut, das dachte ich mir schon, aber was soll ich da Abfragen???? das ist doch mein eigentliches Problem, weil Notes-Klassen und Script nicht mein Gebiet ist....
    Folgendes hatte ich mir in Querymodechange kopiert:


    Sub Querymodechange(Source As Notesuidocument, _Continue As Variant)
    If Not ( source.EditMode ) Then
    currentStatus = source.FieldGetText( "erledigt" )
    If ( currentStatus = "Ja" ) Then Messagebox _
    ( "Dieses Dokument darf nicht mehr verändert werden" )
    continue = False
    End If
    End If
    End Sub


    ... und was soll in Queryopen stehen? HIIIILLFEEEE !!

  • ... das ist so ein Mist, wenn man nicht weiß was man tut!!!


    mein Queryopen sieht jetzt so aus:


    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    If (Mode = 1 ) Then
    currentStatus = source.FieldGetText( "erledigt" )
    If ( currentStatus = "Ja" ) Then Messagebox _
    ( "Dieses Dokument darf nicht mehr verändert werden" )
    continue = False
    End If
    End Sub


    das meiner Logik nach notwendige 2. End If stört ihn. Deshalb hab ich's raus genommen. Dann speichert er die Maske und beim Versuch, ob jetzt das Dokument nicht mehr zu Ändern ist über das Kontextmenü bringt er die Fehlermeldung.


    "Property or Method is not available during QueryOpen: FieldGetText"

    Anschließend lässt er mich im Dokument Änderungen abspeichern!


    Was nun?


    Sorry wenn ich nerve aber irgendwie muß ich das hinbekommen und hab leider keine Ahnung von Script....


    Tausend Dank!

  • versuchs mal so:


    If (Mode = 1 ) Then
    currentStatus = source.Document.erledigt(0)
    If ( currentStatus = "Ja" ) Then
    Messagebox ( "Dieses Dokument darf nicht mehr verändert werden" )
    continue = False
    End If
    End If


    Du hattest das Messagebox direkt hinter dem Then stehen, dann benötigt er kein End If mehr, da nur diese eine Anweisung ausgeführt wird.
    Dürfte übrigens auch im QueryModeChange nicht so funktionieren.

  • ..... bist ein riesen großer Schatz.... es hat funktioniret!!!!!


    Tausend Dank!!!!


    :strike: :strike: :strike: :strike: :strike: :strike: :strike: :strike: :strike: :strike: :strike: :strike: :strike:

  • Hallo und Guten Morgen,


    eehm... da ist dann doch noch ein Problem: seit ich das o.a. Script im Queryopen habe, bekomm ich die Meldung: "Object variable not set", wenn ich ein neues Dokument erfassen will. Nach dem Anklicken des Ok's geht alles normal weiter. Ich habe die flag's wie erledigt usw. alle gesetzt, bei einem neuen Dokument steht erledigt auf "N" ???
    Ehrlich, ich weiß nicht wo ich da was setzen soll....


    Lieben Gruß
    Gaby