Beiträge von percival

    Mein Problem dabei ist folgendes: Ich moechte das Aequivalent zum damaligen QuerySave-Agenten haben. Dieser wurde gestartet, bevor das Dokument gespeichert wurde. Hier konnten dann vor dem eigentlichen Speichern noch Daten validiert bzw. anderweitige Berechnungen durchgefuehrt werden und das auf Basis der aktuellen, noch nicht gespeicherten Benutzereingaben.


    Und genau da steckt das Problem: Ich habe Zugriff auf alle bereits gespeicherten, aber nicht auf die vom Benutzer aktuell veraenderten Daten. Und genau das habe ich erwartet, als ich von der neuen NotesAgent-Methode gelesen habe.


    Was ich kann ist: das Dokument uebergeben, Daten innerhalb des Dokuments im QS-Agenten manipulieren und anschliessend wieder zurueckgeben. Das fortlaufende JavaScript hat dann auch Zugriff auf die veraenderten Daten.


    Kurzum 50% geht, die andere Haelfte leider nicht.

    Ich habe jetzt noch einmal alle Bedingungen geprueft und keinen Fehler gefunden. Aber im Grunde sollte doch auch alles mit den erforderlichen Rechten / Einstellungen laufen, denn ich erhalte das veraenderte in-Memory Dokument doch auch in geaenderter Form zurueck. Siehe Punkt iv) in meinem Ausgangsposting:


    iv) Der Inhalt des Feldes "Testfeld" im JavaScript-Aufruf nach Beendigung des QuerySave-Agenten kann sowohl per currentDocument, als auch mit doc ausgelesen werden.


    Ich verzweifel gerade ...

    Hallo zusammen,


    ich versuche gerade die seit Notes 8.5.2 implementierte Agenten-Funktion "runWithDocumentContext" als QuerySave-Agenten zu verwenden. Folgendes sollte der Agent irgendwann koennen:


    a) Der Benutzer veraendert Daten einer XPage ueber den Browser und diese neuen Werte sind dann entsprechend im NotesXspDocument enthalten.
    b) Anschliessend wird vor dem eigentlichen Speichern ein QuerySave-Agent aufgerufen. Dieser soll die neuen Eingaben validieren und am Ende das Dokument zum Speichern freigeben oder eben nicht.


    Als Beispiel habe ich mal eine vereinfachte Version geschrieben, um die Kernfunktionalitaet zu testen:


    Hier ist der JavaScript-Aufruf:

    Code
    var agent:NotesAgent = database.getAgent("WWWQuerySaveAgent"); currentDocument.setValue("currentDocument", "Frontend-Wert gesetzt!") // dieser Wert kann nicht im Agent ausgelesen werdenvar doc:NotesDocument = currentDocument.getDocument();doc.replaceItemValue("doc", "Backend-Wert gesetzt!")agent.runWithDocumentContext(doc)_dump("Auslesen des Feldes per currentDocument: " + currentDocument.getItemValueString("Testfeld"))_dump("Auslesen des Feldes per doc: " + doc.getItemValueString("Testfeld"))


    Und dies ist der QuerySave-Agent:

    Code
    Print "<WWWQuerySaveAgent> Agent Start"Dim doc As NotesDocumentDim s As New NotesSessionSet doc = s.DocumentContextPrint "<WWWQuerySaveAgent> -> DocID: " + doc.UniversalidPrint "<WWWQuerySaveAgent> -> doc: " + Feldinhalt(doc, "doc")	Print "<WWWQuerySaveAgent> -> currentDocument: " + Feldinhalt(doc, "currentDocument")Call doc.Replaceitemvalue("Testfeld", "Testwert wurde gesetzt")Print "<WWWQuerySaveAgent> Agent Ende"


    Schlussendlich ist dies der Code fuer die Hilfsfunktion Feldinhalt:


    Was passiert ist folgendes:
    i) Die DocID des Backend-Dokuments kann im QuerySave-Agenten ausgelesen werden.
    ii) Der Inhalt des Feldes "doc" wurde mit "Backend-Wert gesetzt!" im QuerySave-Agenten ausgelesen.
    iii) Der Inhalt des Feldes "currentDocument" im QuerySave-Agenten ist leer!
    iv) Der Inhalt des Feldes "Testfeld" im JavaScript-Aufruf nach Beendigung des QuerySave-Agenten kann sowohl per currentDocument, als auch mit doc ausgelesen werden.


    Ich habe erwartet, dass der QuerySave-Agent allerdings auch Zugriff auf die Werte im vorliegenden NotesXspDocument hat, weil es sich schliesslich auch um ein InMemory-Dokument handelt. Stimmt etwas am Code nicht, oder habe ich schlicht einen Denkfehler?


    Gruss
    Sascha

    Hallo zusammen,


    derzeit verzweifel ich gerade an folgendem Problem: Es sollen innerhalb einer XPage die Namen aller Dateianhaenge aus einem ganz bestimmten Richtext-Feld ausgegeben werden. Das Ganze sollte mit Hilfe eines Repeat-Elements (indexVar = i) ganz simpel geloest werden koennen:

    Code
    var doc:NotesDocument = currentDocument.getDocument();
    var rtItem:NotesRichTextItem = doc.getFirstItem("Body");
    var attachment:NotesEmbeddedObject = rtItem.getEmbeddedObjects().elementAt(i);
    var resname:string = attachment.getName();
    return resname;


    Leider resultiert der o.g. Code in folgenden Fehler, den ich mir nicht erklaeren kann:

    Zitat

    Error while executing JavaScript computed expression
    Script interpreter error, line=3, col=45: [TypeError] Error calling method 'getEmbeddedObjects()' on an object of type 'lotus.domino.local.Item [Static Java Interface Wrapper, lotus.domino.local.Item: lotus.domino.Item]'


    Der Auszug aus der "IBM Lotus Domino Designer 8.5 Versions 8.5 and 8.5.1"-Hilfe sagt mir, dass es allerdings genau so funktionieren sollte:

    Zitat

    NotesRichTextItem
    Represents an item of type rich text.
    Access
    To access an existing RichTextItem object, use getFirstItem in Document. You must explicitly cast the return value to RichTextItem.


    Auf unserem Server laeuft die Version 8.5.2 ohne FP, kennt irgendjemand das Problem?


    Gruss
    Sascha

    Ich bekomme überhaupt keine Meldung und kann ganz normal das Design-Element (Maske) öffnen, editieren und speichern.
    Nach erneutem Öffnen der Maske sehe ich auch die Änderungen, die Rechte diesbezüglich habe ich also.


    >> Denn: Ich kann auch Datenbanken im Designer öffnen, deren Code verborgen ist (Ist ja nur ein Flag, das geändert werden muss),
    >> aber an den Code komme ich dann weder im Designer noch im Debugger ran.

    Das bedeutet also, wenn ich den Code editieren und speichern kann, käme die Option "Hide Formulas and Lotus Script" gar nicht in Frage?

    Hallo Taurec,


    danke für die schnelle Antwort. Also diese genannte Option habe ich nicht gemacht, da ich kein neues Template erstellt, sondern ausschließlich eine bestehende Maske und deren Code geändert habe.


    Im Anhang ist ein Screenshot, der diese Fehlerquelle eigentlich ausschließen sollte.


    Hat vielleicht noch jemand eine Idee? Ansonsten werde ich wohl oder übel morgen nochmal von vorne anfangen müssen.


    Gruß
    Sascha

    Hallo Leute,


    ich verzweifel gerade eben. Während der Arbeit an meinem aktuellen Projekt kann ich, von einer Sekunde auf die andere, den Debugger nicht mehr aufrufen.


    In der Statusleiste erscheint die folgende Meldung: "Debug-Anforderung ignoriert. Quell-Code ist verborgen."


    Ich bin mir keineswegs bewusst, irgendwo einen Haken gesetzt oder entfernt zu haben. Des weiteren bekomme ich weiter oben in der Statusleiste die Meldung: "Auf diese Datenbank haben Sie Zugriff als Manager"; die entsprechenden Rechte sollte ich also haben.


    Vielleicht kennt einer von Euch ja einen Trick oder kennt diese absurde Meldung und kann mir helfen den Quellcode-nicht-mehr-verbergen-Knopf zu finden. Bei meinem alten Stand von heute Morgen (12 Stunden und richtig viel Quellcode älter) bekomme ich wie gewohnt den Debugger auf den Monitor.


    Gruß
    Sascha