Autor Thema: Ordner per Lotusscript anlegen funktioniert nicht  (Gelesen 6143 mal)

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Ich möchte benutzerdefinierte Ordner per Lotusscript anlegen - benötige das, um Suchergebnisse anzuzeigen. Wenn ich SPOFU's benutze, funktioniert das PutAllInFolder aus der Suchroutine nicht, bzw. nicht zuverlässig.

Ich habe mir folgendes Script gebastelt, das ich aus einem Agenten heraus aufrufen will, der ansonsten mit vollständigen Admin-Rechten (manipuliert die ACL) korrekt läuft:

Code
Sub createPersonalFolders(user$)
	Dim session As New NotesSession
	Dim sourceDb As New NotesDatabase("","")
	Dim sourceFolder As NotesDocument
	Dim destFolder As NotesDocument
	
	user$="test"
	
	Set sourceDb=session.Currentdatabase	
	'On Error Resume Next
	ForAll folder In sourceDb.Views
		If folder.IsFolder And folder.Name="SearchFolderTemplate" Then
			Set sourceFolder = sourceDb.GetDocumentByUNID(folder.UniversalID)
			Set destFolder = New NotesDocument( SourceDB )
			Call destFolder.CopyAllItems( sourceFolder,True)
			destFolder.~$TITLE="searchfolder_" & user$ &"|searchfolder_" & user$
			Call destFolder.save(True,False)
			Set destFolder = destDb.GetView(folder.Name)
			Exit forall
		End If
	End ForAll
End Sub

Wenn ich nun mein obenstehendes Script als Subroutine in dem Agenten laufen lasse, hängt sich der Client auf und der Ordner "searchfolder_test" wird auch nicht erstellt.

Hat jemand eine Idee, wo mein Fehler liegen könnte?
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #1 am: 28.06.13 - 10:00:43 »
Hast du das Recht in der Datenbank persönliche Ordner zu erstellen?

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #2 am: 28.06.13 - 10:07:50 »
Wenn ich das richtig verstanden habe, geht es nicht um persönliche Ordner.

Was funktioniert bei SPOFU's nicht (baue nämlich gerade auch so etwas und nutze die dabei)?

Einige Dinge sind mir aufgefallen, ist aber nicht fundiert, sondern nur "Bauchgefühl"


Sub createPersonalFolders(user$)
    Dim session As New NotesSession
    Dim sourceDb As New NotesDatabase("","")
    Dim sourceFolder As NotesDocument
    Dim destFolder As NotesDocument
   
    user$="test"
   
    Set sourceDb=session.Currentdatabase   
    'On Error Resume Next  -> hier würde ich in eine Fehlerroutine springen und mir Details ausgeben lassen
    ForAll folder In sourceDb.Views
       If folder.IsFolder And folder.Name="SearchFolderTemplate" Then
          Set sourceFolder = sourceDb.GetDocumentByUNID(folder.UniversalID) -> m.W. kann man Gestaltungselemente nur über die NoteID, aber nicht über die UniversalID holen, also GetDocumentByID (folder.NoteID), mag aber auch nur in alten Versionen so gewesen sein
          Set destFolder = New NotesDocument( SourceDB )
          Call destFolder.CopyAllItems( sourceFolder,True)
          destFolder.~$TITLE="searchfolder_" & user$ &"|searchfolder_" & user$
          Call destFolder.save(True,False)
          Set destFolder = destDb.GetView(folder.Name) -> wozu?
          Exit forall
       End If
    End ForAll
End Sub

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #3 am: 28.06.13 - 10:17:43 »
Das Recht habe ich Axel. Der Agent sollte es doch auch haben, wenn er signiert ist und mit vollständigen Admin-Rechten läuft, oder? Es geht aber in dem Fall nicht um persönliche Ordner, sondern darum öffentliche Ordner in der Form "searchfolder_benutzername" zu erstellen. Mit SPOFUs hat wie gesagt die Übergabe der Entry Collection nicht zuverlässig funktioniert.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #4 am: 28.06.13 - 10:22:39 »
Nochwas

Set destFolder = destDb.GetView(folder.Name)

destDb ist nirgends definiert (aber m.E. eh überflüssig, wie ich schon geschrieben hatte)

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #5 am: 28.06.13 - 10:28:38 »
Wenn ich das richtig verstanden habe, geht es nicht um persönliche Ordner.
Exakt. Ich will öffentliche Ordner per Script anlegen.

Was funktioniert bei SPOFU's nicht (baue nämlich gerade auch so etwas und nutze die dabei)?
Die Übergabe meiner Suchergebnisse per ViewEntryCollection.PutAllInFolder funktionierte zu Beginn, dann plötzlich nicht mehr.
In einem mauell erstellten öffentlichen Ordner werden die Doks aber problemlos angezeigt.

-> m.W. kann man Gestaltungselemente nur über die NoteID, aber nicht über die UniversalID holen, also GetDocumentByID (folder.NoteID), mag aber auch nur in alten Versionen so gewesen sein
Danke, ich werde es einmal damit probieren

Set destFolder = destDb.GetView(folder.Name) -> wozu?
 
Um den Ordner zu initialisieren. Aber ich werde auch das mal auskommentieren.
Und Du hast Recht - wenn dann müsste es sourceDb heissen.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #6 am: 28.06.13 - 10:37:21 »
Habe das jetzt mit NoteID und ohne das GetView versucht... der Client hängt schon wieder 5min...  :-:
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #7 am: 28.06.13 - 10:42:30 »
Hallo,

Hab ich jetzt etwas verpasst.
Zitat
Wenn ich SPOFU's benutze, funktioniert das PutAllInFolder aus der Suchroutine nicht, bzw. nicht zuverlässig.
Hier sagst Du, dass das PutAllInFolder nicht immer korrekt funktioniert. (in Bezug auf SPOFU)

Jetzt bist Du aber auf 'normale' Ordner umgeschwenkt.
Und bei diesen sollte das "PutAllInFolder" doch eigentlich reibungslos funktionieren.


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #8 am: 28.06.13 - 10:48:19 »
Machst Du das mit agent.RunOnServer? Dann würde ich mal ein paar Prints einbauen und im Log nachschauen, was der treibt und wobei er nicht weiterkommt

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #9 am: 28.06.13 - 10:53:44 »
Nein, ich bin als Manager in der ACL eingetragen, mit entsprechenden Rechten in der ECL des Servers. Das Script legt ansonsten Benutzer in der ACL an, ohne Probleme.

Nach 10min war übrigens soeben die Blockade des Clients aufgehoben. Der Ordner wurde aber nicht erstellt.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #10 am: 28.06.13 - 11:06:51 »
Habe gerade gesehen, dass es ladürnich
Code
Call SourceFolder.CopyAllItems( destFolder,True)
heissen muss, nicht umgekehrt.
Ich sehe den destFolder aber immer noch nicht nach Neustart des Clients und öffnen der DB...
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #11 am: 28.06.13 - 11:09:37 »
Per RunOnServer exakt dasselbe Verhalten.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #12 am: 28.06.13 - 11:27:43 »
Hab die Lösung gefunden  :) Danke für Eure Unterstützung!

http://openntf.org/Projects/codebin/codebin.nsf/CodeByDate/8308E61B8975D3D88625726F004EE4A0/$file/CopyFolder.txt
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Driri

  • Gast
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #13 am: 28.06.13 - 12:17:50 »
Dafür brauchst Du (bzw. der Agent) aber mind. Designer-Rechte.

Ich habe mir in einem Agent, der auch einen Ordner anlegen und dann mit dem Ergebnis einer Suche füllen muß, mal mit folgendem Konstrukt beholfen. Ich kann leider nicht mehr sagen, wo ich den Tipp dazu herhabe, aber es funktioniert :

Code
...
Set folder = db.GetView("Ordername")
If (folder Is Nothing) Then
   Call db.EnableFolder("Ordnername")		
End If
...

Dadurch wird der Ordner mit dem Design des Standardordners angelegt und läßt sich auch direkt nutzen.

Dazu auch aus der Designer-Hilfe :

Zitat
Call notesDatabase.EnableFolder( foldername$ )

foldername$
String. The name of the folder that you want to enable. If the folder does not exist, this method creates a folder.

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Ordner per Lotusscript anlegen funktioniert nicht
« Antwort #14 am: 28.06.13 - 13:47:49 »
Kurzes Code ist bessres Code - funktioniert ebenfalls. Herzlichen Dank!
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz