Beiträge von dau_123

    Auf den Maschinen ist ein Client installiert (sonst ginge es ja gar nicht), der läuft aber üblicher Weise nicht.
    Unsere Programme (Kommandozeile, laufen im Hintergrund) werden per Task-Manager alle 30 Min gestartet, manche Aufrufe laufen, andere nicht. Ich habe hier ein Log vorliegen, wo die ersten Aufrufe am Tag sauber durchlaufen, dann kommt gleich beim ersten Zugriff auf die Notes-Session der Fehler (das ist das allererste, was das Programm macht), dann zwischendurch läuft es wieder. Also völlig unspezifiziert.
    Grober Ablauf der Python Programme:
    Session holen
    User Anmelden
    DB öffnen (ist i.a. nur eine)
    Doks bearbeiten
    und gleich das Holen der Session schlägt fehl.
    Timeout wage ich auszuschließen:

    Code
    2011-06-25 05:24:24.83 SessionInit
    2011-06-25 05:24:24.86 SessionInit fehlgeschlagen: Traceback (most recent call last):


    "SessionInit" wird vom Programm ins log geschrieben, die nächste Zeile ist bereits die geworfene Exception. Gerade mal 30ms dazwischen.

    So, habe jetzt endlich mal ein Log-Auszug:


    Code
    2011-06-25 05:24:24.83 SessionInit2011-06-25 05:24:24.86 SessionInit fehlgeschlagen: Traceback (most recent call last):  File "cap\notes\NotesDatenbank.pyc", line 27, in __init__  File "win32com\client\__init__.pyc", line 95, in Dispatch  File "win32com\client\dynamic.pyc", line 108, in _GetGoodDispatchAndUserName  File "win32com\client\dynamic.pyc", line 85, in _GetGoodDispatchcom_error: (-2147467259, 'Unbekannter Fehler', None, None)


    Der dazugehörige Code:

    Python
    class NotesSession:
        def __init__(self, pw=None,logfunction=None):
            if logfunction: logfunction(2, "SessionInit")
                try:
                    win32com.client.pythoncom.CoInitialize()
                except:
                    raise SessionError
            else:
                try:
                    self.sess=win32com.client.Dispatch(u"Lotus.NotesSession")


    Die letzte Zeile ist Zeile 27 aus dem Traceback .
    Python 2.5 auf XP-Rechnern, per das .exe per distutils erzeugt.
    Das Problem tritt nicht immer (aber immer öfter) auf und in dieser Häufigkeit ausschließlich unter 8.5.
    Any ideas?

    Habe mich vielleicht etwas missverständlich ausgedruckt: Hintergrund bedeutet, der User kann nix mehr auswählen, maximal auf einen Knopf drucken. Dann soll z.B. das aktuelle Dok so wie es angezeigt wird auf dem Standard-Drucker ausgegeben werden, ohne weitere Eingaben des Users.
    Gibt es irgendwelche LotusScript- oder Formel-Befehle dazu? Die Hilfe gibt nicht wirklich was dazu her.

    Entweder bin ich blind oder...es geht nicht?
    Ich suche eine Möglichkeit, *ohne* User-Eingriff aus Notes heraus etwas auf dem Default-Drucker auszudrucken. Die Funktionen, die ich gefunden habe, rufen alle den Drucker-Auswahl-Dialog von Windoofs auf, den will ich aber gar nicht sehen.


    Auf Knopfdruck (oder aus dem Hintergrund) soll etwas zuvor Gerendertes (Bild, Dokument, wasauchimmer - das kriege ich schon zusammengebastelt) ausgedruckt werden.

    Da ich die Dateien selber per Python-Programm baue, kann ich (fast) jedes beliebige Format nutzen. Ich kenne mich mit den Details der einzelnen Grafik-Formate allerdings nicht besonders aus...


    Die Grafik muss aber nachträglich automatisiert in das Dokument eingebunden werden können!

    <snip>
    set rtfitem=doc.CreateRichTextItem(feldname)
    set EmbeddedObject = rtfitem.EmbedObject( EMBED_OBJECT, "", filename)
    </snip>
    wobei filename der Dateiname der Grafik ist.

    Ich habe per Lotus Script eine BMP-Grafik aus einer Datei in ein Dokument eingebettet, und zwar als eingebettetes Objekt in einem RitchText-Feld. Danach wird die Grafik aber nicht als Grafik in der entsprechenden Dokumentmaske angezeigt, sondern ich sehe nur den Rahmen mit dem Text-Eintrag 'Bitmap'.
    Bearbeite ich jetzt das Dokument (das RitchText-Feld ist bearbeitbar) und ändere in den Eigenschaften des Objekts den Eintrag 'Anzeigen als' (steht auf Bild, was ja eigentlich korrekt ist) einmal auf 'Bitmap' und anschließend zurück auf 'Bild' und speichere danach das Dokument, sehe ich die Grafik korrekt.
    Wie kann ich es anstellen, dass sofort nach dem Einbetten die Grafik korrekt als Grafik angezeigt wird?
    Es ist wichtig, dass die Grafik beim Anlegen des Dokuments oder auch auch nachträglich über ein Script in das Dokument eingetragen werden kann - dies muss nicht zwingend über ein RitchText Feld geschehen, das war aber die einzige Möglichkeit, die ich gefunden habe.

    Es gibt eine Ansicht als Default View. Und dort werden auch die Antwortdoks angezeigt.
    Und nun?


    Edit: Kommando zurück.
    Es gab bislang nur einen Order "Vorgegebene Gestaltung für Order und Ansichten" (von mir fälschlicher Weise als Default View angesehen) und keine Ansicht war als "Vorgabe beim ersten Öffnen der Datenbank" markiert. Habe das jetzt nachgeholt und es funzt.


    Danke für den Tipp.

    Hallo Forum,
    ich benutze die Methode RichTextItem.appendDocLink (LotusScript), um Dokumente als Links in einer Mail zu versenden. Dies klappt mit beliebigen Dokumenten, nur leider nicht mit Antwort- oder Rückantwortdokumenten. Hier schmeisst mir Lotus Script generell den Fehler
    "Couldn't get default View id for database (xyz.nsf)"


    Das zu versendende Antwortdokument wird aus der Collection aller Antwortdoks geholt. Es spielt aber keine Rolle, ob die Collection als solche noch verfügbar ist, wenn der Doc-Link hinzugefügt werden soll. Auch wenn ich das Dokument noch mal per UniversalID hole, kommt obige Meldung.
    Die Datenbank hat einen Default View.


    Es scheint also an dem Antwortdok zu liegen.


    Hat jemand 'ne Idee?
    Oder geht das prinzipiell nicht?


    Habe schon eine alternative Vorgehensweise, trotzdem hätte ich gerne gewusst, ob es irgendwie doch hinzukriegen ist.

    Ich habe jetzt folgende Lösung gefunden, die wohl (auch für den Kunden) ganz ordentlich aussieht:
    Auswahldialog ist ersatzlos gestrichen, die Auswahl findet direkt in der Maske statt, die vorher den Dialog aufgerufen hat.
    In der Maske gibt es einen zusätzlichen Tab für die Auswahl. Ist die Maske im Edit-Mode, können hier Änderungen vorgenommen werden, sonst erfolgt nur Anzeige des Ordners
    Beim Hinzufügen eines Doks aus der Ansicht wird diese Maske per ws.EditDocument erneut editiert und ein anschließendes uidoc.refresh sorgt dafür, das auch der Ordner sofort aktualisiert wird - ohne zwischenzeitliches schließen der Maske.

    Es soll aber der eingebettete Ordner im Auswahldialog aktualisiert werden. Dialog schließen ist also nicht.


    Ich bin mittlerweile so weit, auf den Dialog zu verzichten und die Auswahl direkt in die Maske einzubinden, die den bislang den Dialog aufgerufen hat. Mal schauen. wie das funktioniert.
    Alles in allem habt ihr mir mit euren Tipps aber schon sehr viel weiter geholfen.

    Zitat


    Diali schrieb:
    über die UniversalID kommst Du eventuell auch ans Frontend-Dokument.

    Code
    set doc = db.GetDocumentByUNID(Hier_die_UniversalID_aus_dem_Profil_eintragen)
    set uidoc = ws.EditDocument(true, doc)


    Genau das habe ich eben gerade ausprobiert, ohne diesen letzten Post gelesen zu haben.
    Fehlermeldung beim ws.EditDocument:


    Damit haben sich die anderen Optionen wohl erübrigt :(

    Moment, UniversalID bezieht sich doch auf ein Dokument im *Backend*?! Dort wird ja aktualisiert, mir geht es ums Frontend.


    Mein Auswahldialog ist zwar eine Maske, wird aber per @DialogBox aus einer anderen Maske heraus geöffnet. Was nützt es mir, wenn ich das (Backend-)Dokument aktualisiere?
    UniversalID der Maske aus dem Frontend?!

    Das Problem ist, dass die Kopieraktion jetzt in der eingebetteten Ansicht stattfindet - und die weiß nix von der Maske, in der sie eingebettet ist, und auch nix von dem dort ebenfalls eingebetteten Ordner.
    Ich probiere nochmal mit den Ordnereinstellungen - vílleicht kann ich ja den Ordner dazu bewegen, doch bei neuen Dokumenten, die Ansicht zu aktualisiern.

    Wenn ich in der Ansicht mehrere Dokumente markiere, werden alle kopiert, das funktioniert, LotusScript sei Dank ;)


    Was (noch) etwas unschön ist: In dem eingebetten Ordner tauchen die Dokumente erst auf, wenn ich hier explizit mit F9 aktualisiere - Das Frontend weiß ja noch nichts davon, dass der Ordner jetzt weitere Dokumente hat (kopiert wird im Backend)
    Ein refresh auf den Ordner (im Backend) bringt hier nichts (was zu erwarten war), und auch ein ReloadWindow auf den aktuellen UIWorkspace aktualisiert nicht den Ordner, da das Reload ja in der Ansicht stattfindet.

    In dem Dialog wird der Ordnername ja bereits ermittelt, das ist ja gar nicht das Problem. Das Problem ist die Ansicht, denn die kennt die Vorgaben für die Ermittlung des Ordnernamens nicht. Und da ja nur die Ansicht die selektierten Dokumente kennt, muss sie die Dokumente kopieren. Also doch erst in einen temporären, fixen Ordner und beim Verlassen des Dialogs umkopieren.


    Es würde direkt funktionieren, wenn eingebettete Elemente Informationen über die Elemente hätten, die sie einbetten bzw. umgekehrt. Aber das scheint ja wohl nicht der Fall zu sein. Ist ja auch nirgendwo dokumentiert.
    :-/