und warum loopst Du manuell und suchst Dir nicht einfach das Dokument über dc.GetDocument( ViewEntry ) ....
je nachdem in welchem Verhältnis die Anzahl der Selektierten Dokumente zur Anzahl der Dokumente in der View steht, könnte es noch performanter sein, wenn Du die UnprocessedDocuments durchläufst, dann aus den ViewEntries den entsprechenden Eintrag per GetEntry( ) bekommst, und Dir dann eine Liste aufbaust. Diese Liste sortierst Du mit hilfe eines Tricks und durchläufst dann diese Liste...
Code (einfach so getippt, nur als Konzept gedacht, VEC ist Deine ViewEntryCollection, dc die Unprocesseddocuments):
Dim docList list as NotesDocument
dim tmpEntry as NotesViewEntry
Dim sortIndizes as String
Dim tmpPos as String
Dim sortedPos as Variant
Dim tmpDoc as NotesDocument
Forall lDoc in dc
set tmpEntry = VEC.GetEntry( lDoc )
tmpPos = tmpEntry.GetPosition( "." )
docList( tmpPos ) = lDoc
if sortIndizes = "" then
sortIndizes = |@Sort( "| & tmpPos & |"|
else
sortIndizes = sortIndizes & |:"| & tmpPos & |"|
end if
End Forall
sortIndizes = sortIndizes & | )|
sortedPos = Evaluate( sortIndizes )
Forall pos in sortedPos
Set tmpDoc = docList( pos )
... hier Deine Aktionen mit dem Dok...
Next
nur so als Denkanstoss... der erste Tipp bringt auf jeden Fall für Dich einiges an Performance, der zweite KANN Performance bringen, wenn z.B. 10 Dokumente selektiert sind und 4000 Dokumente in der View... Dann durchläufst Du eine 10er Schleife 2 mal anstatt einer 4000er Schleife 1 mal....
HTH
Tode
EDIT: Achtung: In einer Ansicht mit Kategorien liefert GetPosition solche Werte (schon mit sort sortiert):
1.1.1
10.1.1
2.1.1
da müsstest Du im Script das ganze noch "normieren" (Split nach "." , auf 5 Stellen normieren, dann wieder imploden), damit das so aussieht (wiederum nach sort):
00001.00001.00001
00002.00001.00001
00010.00001.00001