Problem bei automatischer Nummerierung von Dokumenten

  • Bei einer Datenbank gibt es in Dokumenten verschiedene Stati (Entwurf, Vorlage, Entscheidung).


    Die Dokumente werden mit Leser- und Autorenrechten versehen.
    Solange ein Dokument im Status Entwurf ist, erhält der Ersteller automatisch ein Autorenrecht. Dieser kann bei der Erfassung einen Vertreter wählen, der ebenfalls ein Schreibrecht auf dieses Dokument erhält. Zusätzlich kann der Erfasser zuständige Bereiche auswählen, die ein Leserecht auf dieses Dokument erhalten.
    Bei Umsetzung des Dokumentes in den Status Vorlage werden die Schreibrechte in ein Leserecht umgewandelt, sodass an diesem Dokument nachträglich keine Veränderungen mehr vorgenommen werden können. Das Dokument erhält eine automatische Laufnummer, die ich mit folgender Formel setze. (mit einer Hilfsansicht (vwLF), in der "alle" Dokumente angezeigt werden)


    l:=@DbColumn("":"NoCache";"";"vwLF";1);
    null:=@If(@Elements(l)<1;@Return(1);"");
    max:=@Subset(l;-1);
    t:=max+1


    Problem ist aber, dass die Laufnummern teilweise in der Datenbank nun doppelt vergeben werden.
    (Liegt wahrscheinlich daran, dass die User nicht Zugriff auf alle Dokumente haben.)


    Hat jemand einen Lösungsvorschlag für mich, damit die Laufnummern nur einmalig in der Datenbank vergeben werden?


    Vielen Dank schon mal im Voraus.

    • Offizieller Beitrag

    also bei laufenden nummern gibt es im Notesumfeld einiges zu beachten. Hier mal ein paar Anmerkungen:
    - verteiltes System
    - offline
    - Leserfelder (Zugriffe auf Dokumente)


    Eine ausführliche Diskussion hatten wir da schon mal. Suche mal im Forum nach laufender Nummer.


    Lösungsansatz:
    Ein Agent, der nur auf einem Domino läuft vergibt die Nummern periodisch.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Das ist vom Prinzip ein ganz guter Ansatz, allerdings müssen die User, sobald der Status in Vorlage gesetzt wird einen Ausdruck erzeugen, der mit Laufnummer versehen ist, auf dem eine ORIGINAL-Unterschrift der Vorgesetzten zu erfolgen hat.


    Von daher ist das mit dem periodischen Agenten schwierig. :(


    Meinst Du man kann eine Ansicht (bzw. Hilfsmaske bauen) die mit einem Agenten gefüllt wird und die nur die Laufnummern beinhalten, die bereits vergeben sind. Diese Neue Ansicht bzw. Maske würde dann für alle ersichtlich sein?

    • Offizieller Beitrag

    ja mit einer Ansicht und einem Dokument würde es funktionieren. Mit allen oben erwähnten Nachteilen.


    Ansonsten Schreib ein eindeutiges Kürzel des Users vor die Nummer, d.h. jeder User bekommt seine eigene laufende Nummer.


    Oder verwende die DocumentUniqueID (UniversalID).


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • hi,


    das problem gabs hier auch...lösungsansatz von diali ist sehr gut (andes gehts nicht um eindeutig zu sein) ..bei uns hat jeder (!) user seinen eigenes konfigurationsdokument in diesem wird ein nummernkreis hinterlegt den nur er hat...und stündlich wird der nummernkreis voon einem agenten wieder aufgefüllt (d.h. nicht vergebene nummern, bleiben bestehen, z.b 10 nummern insgesamt 2 vergeben werden auch nur 2 neu zugewiesen)


    die nummern sind zwar fortlaufend in der vergabe aber dadurch nicht mehr beim vergeben..aber keine einzige nummer kommt doppelt vor..einfach eine nummer aus dem kreis ziehen und beim speichern/statuswechsel vergeben



    hoffe hilft als ansatz

  • Die Lösung war das Profildokument.
    Schreibe hier noch die Antwort rein, da ich denke dass es jetzt funktioniert und vielleicht für einige auch interessant sein könnte:


    Habe ein Profildokument mit einem Feld erstellt in dem, unter der Serverberechtigung (=> Rechte auf alle Dokumente) mit @DBColumn bzw. @Subset der letzte Wert angezeigt wird.


    Bei Umsetzung des Dokumentes in den Stati "Vorlage" wird automatisch der Wert im Profildokument + 1 gesetzt.
    Am Ende des Vorgangs aktualisiert ein anderer Agent das Feld im Profildokument und setzt diesen Wert dementsprechend um 1 höher.


    So sollte es funktionieren, zumindest in meinen Tests hat es das...
    :)


    Vielen Dank an alle, die mir geantwortet haben.


    Gruß
    Silvia

  • Silvia, das ist genau nicht die Lösung: ProfileDocuments werden in Cache der Clients gehalten. Wenn also der Agent den Wert erhöht, bekommt das ein anderer Client gar nicht mit - Nummern werden mehrfach vergeben.


    Benutze bitte unbedingt noch mal die Suche (im DominoForum, bei AtNotes, bei IBM LDD). Eine "kleine" Linksammlung haben wir hier schon mehr als vier Jahren zusammengetragen:
    click here


    Bernhard