Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Lancelot am 17.05.11 - 14:45:52

Titel: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: Lancelot am 17.05.11 - 14:45:52
Hallo Leute,

die Forumsuche hat mir nicht geholfen, jetzt bräuchte ich mal wieder den Rat der Experten.

Ich muss aus einem Dok einer selbst entwickelten DB ein PDF machen.
Alle Anhänge aus dem Dok egal in welchem Feld die sind extrahieren und das PDF als auch die Anhänge
in eine Mail anhängen und verschicken.

Das soll ich so machen, weil dann das Dokument den Black Berry und iPhon User schön lesbar angezeigt werden.

Durchlaufe ich den Agent im Debug Schrittweise funzt der Agent auch super toll.
Lasse ich den Agent ohne Debug laufen kommt bei "Set obj = Body,Embedobject.... die Meldung "File not Found".
Das PDF ist aber im Ordner vorhanden und lässt sich auch manuelle öffnen.

Das Laufwerk hat jeder User verbunden bekommen und auf den Ordner habe alle im Mom Vollzugriff.
Der Agent ist mit einer Developer ID gespeichert, die Überall als Admin hinterlegt ist.

Hat jemand eine Idee woran das liegen kann?

Sriptauszug:

Set memo = New NotesDocument( mailDB )
memo.Form = "MemoProjekt"
   
Set Body = New NotesRichtextItem( memo , "Body" )
Set nkBody = New NotesRichtextItem( memo , "nkBody" )
Set doc = uidoc.Document
pfad_anhang = "U:\Allgemein\TEST_PDF\"
         
REM kopieren der Anhänge in das Email.
Call uidoc.Print( 1, 0, 0, False, "PDF-XChange 3.0" )
   
REM HIer kommt der Fehler "File U:\Allgemein\TEST_PDF\LIEF.PDF" not found
Set obj = Body.Embedobject(EMBED_ATTACHMENT, "", pfad_anhang & "Lief.pdf")
   
REM Prüfung ob Feld "Allgemeines" einen Anhang hat.
REM Wenn ja Anhang in Laufwerk "U:\" extrahieren und im Email neu anhängen.
filecount = 0
Set rtitem = doc.GetFirstItem( "Allgemeines" )
If ( rtitem.Type = RICHTEXT ) Then
   If IsArray (rtitem.EmbeddedObjects) Then
      ForAll o In rtitem.EmbeddedObjects

Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: m3 am 17.05.11 - 14:58:12
Seufz. Ich glaub, ich werde mal eine FAQ schreiben.

Wenn Der Agent am Server läuft (auch wenn er als "User" läuft) läuft er unter dem SYSTEM Account, der auf Netzlaufwerke (und U: wird ja wohl eins sein), nicht zugreifen kann.

Für die Lösung -> siehe Forumssuche oder ich suchs Dir später raus.
Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: Lancelot am 17.05.11 - 15:04:24
Danke Martin für die schnelle Antwort.
Nur ganz verstehe ich Dich mit Systemaccount nicht.

Ich bin auf meiner Kiste sogar als Systemadmin angemeldet.
der Zugriff auf Laufwerk und Ordner steht auf jeder Vollzugriff.

Somit versteh ich das Problem der Berechtigung nicht.

Egal ich suche mal unter diesen Begriffen im Forum

Danke!

Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: ascabg am 17.05.11 - 15:05:28
Hallo,

Na dann stellen wir doch mal die Frage.

Wie wird der Agent gestartet?


Andreas
Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: Lancelot am 17.05.11 - 15:14:33
Der Agent wird im Momen noch per Mausklick auf einen Butto und dem Commandbefehl auf meinem PC aufgerufen.
Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: m3 am 17.05.11 - 15:15:41
Ein "RunOnServer" involviert?
Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: Lancelot am 17.05.11 - 15:38:54
Bringt auch nichts.
Hab sogar die Sicherheitsstufe auf 3. mti vollen Adminrechten laufen lassen gesetzt.

Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: m3 am 17.05.11 - 15:42:32
Ok, nochmal langsam.
Der Benutzer hat eine Notes-DB offen (lokal oder am Server?). In dieser drückt er auf einen Button. Was/welcher Code wird dann ausgeführt, um den Agent zu starten?

Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: Lancelot am 17.05.11 - 16:15:31
OK der User hat das Doc zum bearbeiten offen.
Klickt auf einen Button und in dem Button starten der @Command([ToolsRunMacro]...) den Scriptagenten.

Dieser Agent soll dann aus dem Dok ein PDF machen, dies läuft über einen PDF Druckertreiber ab und soll danach das PDF + alle Anhänge aus dem Dok als neues Email verschicken.

Ich glaube eine Vermutung zu haben.
Notes wird hier zu schnell sein.
Ich sehe zwar das Dokument aber Notes noch nicht, weil die Datei noch nicht im
Indexe von Windows eingetragen ist oder so.

Ich bau jetzt mal eine kleine Warteschleife ein, mal sehen was passiert.

Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: Lancelot am 17.05.11 - 16:58:42
Yes, ich habe es gelöst.
Die Warteschleife hat geholfen.
Weis zwar nciht warum Windows 7 die Datei zu der Zeit noch nicht hat,
aber nach dem EInbau der Schleife läuft der Agent fehlerfrei durch udn tut sein Arbeit.

Wen es interresiert oder auch das Problem haben sollte,
hier die Schleife.

Das Script ist getestet und funktioiniert durch einfaches reinkopieren udn setzen der Variabelen.

pfad_dir = "Pfad und Dateiname den man sucht"
'Wartezeit bis der Durchlauf neu startet.
timeout = 2 'Typ Long
   
bWarten=True
'Anzahl wie oft der Ordner durchlaufen wir.
lLauf=3
lLaufZahl=0
Do While bWarten=True
   sDirErg = Dir$(pfad_dir, 0)
   Do While sDirErg <> ""
   'Abfrage ob der eingelesen Wert sDirErg der Vorgaben im pfad_Dir entspricht.   
   If UCase(Trim(pfad_dir))=UCase(Trim(sDirErg)) Then
      bWarten=False
      sDirErg=""
   Else
      sDirErg=Dir$()
   End If
   Loop 
   If lLaufZahl>lLauf Then
      bWarten=False
   End If
   If bWarten=True Then
      lLaufZahl=lLaufZahl+1
      startTime! = Timer()
      Do While Timer()<startTime! + timeout
         Yield
      Loop 
   End If   
Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: jr am 18.05.11 - 11:15:18
@Martin (m3)

das mit dem Netzwerkzugriff ist meines Erachtens nicht ganz richtig. Ich habe in ein Paar Datenbanken durchaus Hintergrundagenten, die auf Netzwerklaufwerke zugreifen, lesen und schreibend.

Ich glaube, es hängt damit zusammen, wie die Netzwerklaufwerke gemappt sind. Wenn ich zum Beispiel vor dem Zugriff über eine Funktion das Netzwerklaufwerk erst mappe, kann ich danach problemlos darauf zugreifen (sofern die Ausführungsrechte des Agenten stimmen) und es danach auch wieder freigebe.

Beispiel:

x = Shell("cmd /c net use u: \\server\freigabe", 2)
open "u:\file" for output as #1
print #1, "Fritz"
close #1
x = Shell("cmd /c net use u: /d", 2)


Ist jetzt ganz schnellt heruntergeschrieben, aber vom Prinzip her funktioniert das.

Gruß,

Joachim
Titel: Re: Anhang wird per Script nicht im angegeben Ordner gefunden.
Beitrag von: m3 am 18.05.11 - 12:03:02
Solange der Agent am Client und nicht im Server-Kontext (etwa aufruf übers Web) ausgeführt wird, stimme ich Dir zu. AFAIK helfen Dir die Buchstaben am Server nicht, weil es die im SYSTEM-User Kontext nicht gibt.