Zugriff auf markierte Dokumente in Ansicht sortiert und in Reihenfolge

  • Hallo,


    gibt es eine Möglichkeit ausgewählte Dokumente über Script sortiert und genau in der Reihenfolge wie ich sie markiert habe weiter zu verarbeiten.


    Über UIView.Documents greift mir die Collection unsortiert auf die Dokumente zu wie auch bei Db.UnprocessedDocuments.

  • Was spricht dagegen, die Collection deinen Wünschen entsprechend zu sortieren?

    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

  • Du meinst per Script, wenn ich die Collection habe?
    Gibt es keinen einfacheren Weg?
    Ich hab mir halt gedacht, wenn ich die Dokumente in der Ansicht und innerhalb einer Kategorie schon sortiert habe, muss
    ich sie bestimmt nicht noch nochmal per Sript sortieren.


    Auf die schnelle fällt mir da auch kein Code ein, dies per Sctipt zu machen.
    Tipps???

  • Die Frage ist, wie du sie weiterverarbeiten willst.
    In der Hilfe steht ja zunächst einmal klar, dass die Collection nur sortiert ist, wenn sie aus einer Volltextsuche resultiert und db.FTSearch bspw. kann man einige wenige Sortieroptionen mitgeben. Wenn die Collection -wie bei dir der Fall- aus anderen Quellen zusammengestellt wird, ist sie unsortiert. So, damit muss man halt leben.


    Was du machen kannst ist, durch die Collection durchiterieren und die Merkmale, nach denen du sortieren willst, in ein Array schreiben und es entsprechend sortieren. Also bspw. Arr(0)=$FELDINHALT + "!!!" + $DOCUNIQUEID ... um jetzt mal ein ganz einfaches Beispiel zu geben. Die UNID merkst du dir, damit du hinterher weißt, um welches Dokument es sich handelt, klar. Selbstredend lässt sich das Prinzip erweitern, bzw. durch höher entwickelte Prinzipien ersetzen. Dieses hier ist nämlich ganz sicher nicht für alle Anwendungsfälle gleichermaßen geeignet.


    Einen Sortieralgorithmus nachzubauen ist ja nicht wirklich das Problem; soweit muss man aber nicht gehen: im DD ist bereits ein QuickSort implementiert. Wenn der ausreicht, kann man darauf aufsetzen.


    Wie gesagt: die Frage ist, was du brauchst und inwieweit du willens bist, um gewisse Restriktionen herum zu programmieren.

    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

  • Was meinst du mit Quicksort??


    Was ich will und mache ist markierte Dokumente in ein Word zu exportieren in einem bestimmten Format.
    Aber leider unsortiert, da ich nicht über die Volltextsuche gehe. Naja, blöd, aber ist halt so :(


    Bleibt mir wohl nichts anderes übrig, die sortierung selber zu machen.

  • um das Ganze "sortiert" zu duchlaufen, musst Du gewisse Handstände machen. Je nach Verhältnis markierter / nicht markierter Dokumente kannst Du folgendermassen vorgehen:


    Wenn Du nicht so viele Dokumente in der View hast, erstellst Du Dir einen View- Navigator und durchläufst alle entries. Dann holst Du Dir das Dokument des Entries und probierst, ob es in der Collection ist:


    Set docCollection = dc.GetDocument( docAusView )


    wenn docCollection nicht Nothing ist, dann exportierst Du es....


    Nachteil: Du durchläufst die ganze View...


    Andersrum kannst Du auch so vorgehen, dass Du aus dem doc der Collection die Position innerhalb der View rausliest (erst den Entry zum Dokument in der View per NotesViewNavigator.getEntry( doc ), dann entry.getPosition) und Dir ein assoziatives Array zu bauen strArray( pos ) = universalid. Dann die pos- Werte sortieren und in der richtigen Reihenfolge exportieren...

  • Was meinst du mit Quicksort?? (...)
    Bleibt mir wohl nichts anderes übrig, die sortierung selber zu machen.


    Das habe ich doch gesagt, dass sich im Zweifelsfalle um die Sortierung selbst gekümmert werden muss. Und QuickSort ist da nur eine Möglichkeit.


    Zitat


    Was ich will und mache ist markierte Dokumente in ein Word zu exportieren in einem bestimmten Format.
    Aber leider unsortiert, da ich nicht über die Volltextsuche gehe. Naja, blöd, aber ist halt so :(


    Mal von vorne: du exportierst Dokumente nach Word ... das ist zunächst einmal ein weites Feld.
    Jedes NotesDocument in ein eigenes Word-File oder alle NotesDocuments in ein einziges Word-File?


    Wenn für jedes NotesDocument ein eigenes Word-File erstellt werden soll, ist die Sortierung aus der Ansicht heraus irrelevant, da die Sortierung des Ergebnisses schlussendlich über den Windows Explorer einstellbar ist (Dateiname, -typ, -erstelldatum, -autor, what-so-ever).


    Geht es darum, mehrere NotesDocuments in ein Word-File zu exportieren, ließe es sich so lösen, dass @Command([FileExport]; ...) auf "All selected documents" läuft, entsprechend einzelne Files ausspuckt, die dann gescriptet oder manuell in ein Word-File importiert werden, hierher werden die temporär angelegten Einzeilfiles gelöscht. Das bedingt aber eine View, die bereits den gewünschten Sortierkriterien entspricht, da ein Agent mit diesem Target die View von oben nach unten abarbeitet.


    Ansonsten bleibt halt nur eine selbstprogrammierte Routine, die bspw db.FTSearch, view.FTSearch, ... verwendet und die Ergebnisse so ausgibt, dass unmittelbar daran der Export stattfinden kann. Eine eigens für den Export angelegte View ist aus Performancegründen aber vorzuziehen.

    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

    • Offizieller Beitrag

    es gibt hier mehrere Ansätze.
    Hier mal 2 mögliche Szenarien.


    1.
    - durchgehen der Col
    - in einem String alle UniversalIDs merken (z.B.:"#uid1#uid2#...#uidx#")
    - über den ViewNavigator die Ansicht durchgehen
    - prüfen, ob die UniversalID des aktuellen Eintrages in dem String vorhanden ist (instr)
    - - ja => exportieren
    Die Sortierung übernimmt dabei die Ansicht.


    2.
    - ein 2-dim Array (x, y) erzeugen (x = 0 ... Sortkey, x = 1 ... UniversalID)
    - Schleife über die col
    - - an die Stelle x = 0 schreibst du einen Sortierschlüssel
    - - an die Stelle x = 1 schreibst due die UniversalID des Dokumentes
    - Array anhand des keys (x = 0) sortieren (Quicksort oder andere Sort. verwenden)
    - Schleife über Array (Dimension y)
    - UniversalID aus dem Array auslesen (x = 1)
    - Dokument holen (db.GetDocumentByUnid)
    - Dokument exportieren
    Die Sortierung ist unabhängig von der Ansicht, da du im Code den Key zusammenstellen kannst, wie du willst.


    Soll der Code in mehreren Ansichten funktionieren und die Sortierung der Ansicht benutzen, dann nimm Variante 1.


    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