Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: pimpfling am 07.12.10 - 16:07:05

Titel: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 07.12.10 - 16:07:05
Hallo,

ich möchte per Browser ein Feld in einem Antwortdokument befüllen.
Das ist soweit kein Problem.
Nun brauche ich aber eine Überprüfung ob es noch andere Antwortdokumente gibt.
Wenn ja, soll dort der Wert dann explizit nicht gesetzt sein, soll also entfernt werden.
Ich habe das ganze im Notesclient per Knopfdruck im UIDoc und document collection über die anderen Antwortdokumente gelöst.
Das funktioniert aber alles im Web nicht mehr.

Hat jemand einen Tipp oder Denkanstoss wie ich das realisieren kann?
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: atbits am 07.12.10 - 16:09:30
In einem WebQuerySave Agent, kannst Du mehr oder weniger das selbe machen wie im NotesClient.

Grüße David
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 07.12.10 - 16:13:26
hm, also den LS Code nehmen, einen Agenten damit befüllen, alles was nach UI riecht entfernen/austauschen und dann den Agenten per @Command([ToolsRunMacro]; "<Your agent goes here>") aufrufen?
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: atbits am 07.12.10 - 16:17:39
Genau - mehr oder weniger

Das aktuelle Dokument (auf dem das Save aufgerufen wurde) bekommst Du über:

Code
Set session = New NotesSession	
Set db = session.CurrentDatabase
Set cdoc = session.DocumentContext

Grüße David
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 07.12.10 - 16:26:46
Super,

vielen Dank.
Das ganze sieht nun so aus:

   Dim parentUnid As String
   Dim db As NotesDatabase
   Dim Parent As NotesDocument   
   Dim collection As NotesDocumentCollection
   Dim currentResponse As NotesDocument
   Dim session As NotesSession
   Dim item As NotesItem
   Dim doc As NotesDocument
   Dim view As NotesView
   Dim uidoc As NotesUIDocument
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set view = db.GetView("VWDevices")   
   Set doc = session.DocumentContext
   Set parent = db.GetDocumentByUNID ( doc.ParentDocumentUNID )
   Set collection = parent.Responses
   
   Set currentResponse = collection.GetFirstDocument
   Call doc.Save(True,True)
   
   If doc.GetItemValue( "DC_ActiveDevice" )(0) = "Yes" Then
      While Not currentResponse Is Nothing
         If doc.UniversalID <> currentResponse.UniversalID Then
            Set item = currentResponse.ReplaceItemValue( "DC_ActiveDevice", "" )
            Call currentResponse.Save( True, True )
         End If
         Set currentResponse = collection.GetNextDocument(currentResponse)
      Wend
   End If


Das setzen des Feldes mache ich im Web jetzt per @Formel Button in der Maske. Das klappt soweit auch, allerdings wird das Feld bei den anderen Dokumenten nicht bearbeitet...

Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 08.12.10 - 09:10:53
Wie kann ich den Aufruf @Command([ToolsRunMacro]; "SetActiveDevice") im WebQuerySave Event debuggen?
Ich sehe keine print Ausgaben in der Domino Server Konsole...
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: atbits am 08.12.10 - 09:19:39
Verwende msgbox ;-)
Das landet dann auf der Serverkonsole und in der log.nsf

oder ein logging framework  8)
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 08.12.10 - 09:36:41
Es kommt keine Meldung auf der Konsole...

Hier nochmal der Agent:
Code
Sub Initialize
	Msgbox "Hallo"	
	Dim parentUnid As String
	Dim db As NotesDatabase
	Dim Parent As NotesDocument	
	Dim collection As NotesDocumentCollection
	Dim currentResponse As NotesDocument
	Dim session As NotesSession
	Dim item As NotesItem
	Dim doc As NotesDocument
	Dim view As NotesView
	
	Set session = New NotesSession
	Set db = session.CurrentDatabase
	Msgbox 1
	Set view = db.GetView("VWDevices")	
	Set doc = session.DocumentContext
	Set parent = db.GetDocumentByUNID ( doc.ParentDocumentUNID )
	Set collection = parent.Responses
	Msgbox 2
	Set currentResponse = collection.GetFirstDocument
	Call doc.Save(True,True)
	Msgbox 3
	If doc.GetItemValue( "DC_ActiveDevice" )(0) = "Yes" Then
		While Not currentResponse Is Nothing
			If doc.UniversalID <> currentResponse.UniversalID Then
				Set item = currentResponse.ReplaceItemValue( "DC_ActiveDevice", "" )
				Call currentResponse.Save( True, True )
			End If
			Set currentResponse = collection.GetNextDocument(currentResponse)
		Wend
	End If
End Sub
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 08.12.10 - 09:37:43
PS. Im Notes Client funktioniert es.
Dokument in einer View markiert und den Agenten über Aktionen ausführen...
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: atbits am 08.12.10 - 09:45:39
Was sagt denn das Log des Agents im Designer, wurde der Agent überhaupt ausgeführt. Mußt Du vielleicht Klammern ergänzen oder wegnehmen beim Agentnamen oder den Trigger anders setzen?

Ist es evtl ein restricteter Agent und das darfst Du nicht?
Titel: Re: Antwortdokumente im Web ermitteln/abfragen/bearbeiten
Beitrag von: pimpfling am 08.12.10 - 10:00:05
Danke, das wars....

Jetzt hat der Agent die Eigenschaften:

Trigger: Agent list selection
Target: None
Security level: 3

...und läuft.