Das Notes Forum

Lotus Notes / Domino Sonstiges => Projekt Bereich => Help-Desk Applikation !!Help!! => Thema gestartet von: agentzwick am 14.11.06 - 16:26:24

Titel: Meldung im LOG
Beitrag von: agentzwick am 14.11.06 - 16:26:24

Was sind den das für 2 Meldungen ??

13.11.2006 15:05:21  : PROCESSRTTAGS: 4504 on line 135: Restricted operation cannot cross logical boundaries
 und
13.11.2006 15:05:21  : SPOOFMESSAGE: 4505 on line 367: Edit of rich text failed

 ???
Titel: Re: Meldung im LOG
Beitrag von: eknori am 14.11.06 - 17:43:08
Der Fehler taucht auf, wenn Beginn und Ende einer rtRange zusammenfallen.
Hier müsste ich jetzt wissen, bei welcher Gelegenheit der Fehler auftaucht. Ist es bei der Eskaltion oder beim Versenden einer Mail mit Mailtemplate oder dergleichen.
Titel: Re: Meldung im LOG
Beitrag von: agentzwick am 14.11.06 - 18:28:05
Tja gute Frage. Ehrlich gesagt ich muß es mal beobachten. Ich Teste mal verschiedene Sachen.
Titel: Re: Meldung im LOG
Beitrag von: eknori am 14.11.06 - 18:39:52
Von der Zeilennummer her betrifft das die Funktion ProcessRTTags  in der lib.Appl.functions.


      If rtnav.FindFirstString("°") Then
         Do
            Call rtrange.SetBegin(rtnav)
            Call rtrange.SetEnd(rtnav)
            Call rtrange.remove

            Call rtitem.BeginInsert(rtnav)
            Call rtitem.addnewline(1)
            Call rtitem.EndInsert
            Call rtitem.Update
            Set rtnav = rtItem.CreateNavigator
            Set rtrange = rtItem.CreateRange
         Loop While rtnav.findfirststring("°")
      End If

Probleme bereiten die fett gedruckten Zeilen. ( soviel steht fest )
Aber die genaue Ursache kann ich dir aus der Ferne nicht sagen. Muss irgend etwas mit den verwendeten Mailvorlagen zu tun haben

Edit: gibt es in deinen Mailvorlagen irgendwo einen Tag, wo dieser durch den feldinhalt mit Zeilenümbrüchen ersetzt wird ?
Titel: Re: Meldung im LOG
Beitrag von: Thomas Schulte am 15.11.06 - 08:51:03
Ok Ich weis jetzt warum das passiert.

Wenn bei einem Template als letztes ein <<Tag>> enthalten ist, das mehrere Werte mit Zeilentrennung getrennt hat, und nur noch Linefeeds dahinter kommen oder nichts mehr, dann verhält sich das genau so wie beschrieben. Warum entzieht sich mir im Moment noch.

eine mögliche Abhilfe wäre es, hinter den Tag einfach noch einen Punkt zu machen Dann funktioniert das erst mal wieder.
Titel: Re: Meldung im LOG
Beitrag von: eknori am 15.11.06 - 08:56:16
Aha, hatte ich das doch richtig vermutet  ;)

Ich gehe davon aus, daß du das schon im debugger beobachtet hast ... Lässt sich das irgendwie abfangen, oder sagt der Debugger dazu nichts ?
Titel: Re: Meldung im LOG
Beitrag von: Thomas Schulte am 15.11.06 - 09:08:17
Es wird noch ein wenig interessanter.

Wenn das Solutions Feld so ausschaut:

Blabla[CRLF]
Bla[CRLF]
Blablabla

Dann funktioniert das richtig auch wenn es am Ende sitzt und kein Zeichen mehr hinterherkommt.

Schaut es aber so aus:
Blabla[CRLF]
Bla[CRLF]
Blablabla[CRLF]

Dann funktioniert das nicht.

Unter Umständen können wir da noch was über die Programmierung machen. Das muss ich mir aber erst einmal anschauen.
Titel: Re: Meldung im LOG
Beitrag von: eknori am 15.11.06 - 09:14:46
Logisch ist der Fehler schon. Es müsste doch ausreichen, wenn wir die fehlernummer entspreched mit on error nnnn goto ... behandeln.
Titel: Re: Meldung im LOG
Beitrag von: eknori am 15.11.06 - 09:25:21
Habs jetzt nicht getestet, aber evtl kommt man dem fehler mit folgenden Änderungen bei

Folgende Zeile an den Anfang der Function einfügen

On Error 4504 Goto    ERROR_4504

und im coding die fett gedruckte Sprungmarke setzen


      If rtnav.FindFirstString("°") Then
         Do
            Call rtrange.SetBegin(rtnav)
            Call rtrange.SetEnd(rtnav)
            Call rtrange.remove
            Call rtitem.BeginInsert(rtnav)
            Call rtitem.addnewline(1)
            Call rtitem.EndInsert
            Call rtitem.Update
            Set rtnav = rtItem.CreateNavigator
            Set rtrange = rtItem.CreateRange
            
         Loop While rtnav.findfirststring("°")
ERROR_4504: ' according to issue mentioned here --> http://atnotes.de/index.php?topic=33526.msg210617#msg210617         
      End If
      
   End If
Titel: Re: Meldung im LOG
Beitrag von: Thomas Schulte am 15.11.06 - 09:28:59
Hmm ich würde beim Austausch der CRLF ansetzen.

Das letzte CRLF das durch ein CHR(0) ausgetauscht wird ist der Übeltäter. Sobald das auftaucht schmiert er ab. Also muss ich alle CHR(0) die am Schluß eines Getstrings sitzen entfernen.
Titel: Re: Meldung im LOG
Beitrag von: Thomas Schulte am 15.11.06 - 09:49:56
hat ihm:
In der ProcessRTTags bauen wir den String zusammen und replacen alle CRLFs mit °. Wenn am Ende des zusammengesetzen Strings noch welche übrig sind müssen wir die wieder wegschmeissen.

Also müssen wir hier noch einen DoWhile Loop einbauen:
Code
	               'we have a item name => use item text as value if it is a richttext else use cstr values and separate the values with chr10 chr13 
				' if there are multiple values in that item	
					If  ItemTextExists ( fieldReadDoc, strT )  Then               
						Set readfromitem = fieldreaddoc.getfirstitem(strT)
						If readfromitem.Type <> TEXT And readfromitem.Type <> DATETIMES And readfromitem.Type <>NUMBERS Then
							getstring = fieldReadDoc.GetFirstItem(  strT ).text
						Else
							Forall v In readfromitem.Values
								If getstring <> "" Then
									getstring = getstring + "°" + Cstr(v)
								Else
									getstring = Cstr(v)
								End If
							End Forall
						End If   
						' replace every occurence of chr(10) + chr(13) with chr(0) in getstring
						CrLf = Chr$(13) & Chr$(10) ' Carriage Return and a Line Feed character
						getstring = Replace(getstring,CrLf,"°")
						' remove the "°" as long as it is the last sign in the string
						' needed because of error issue mentioned here --> http://atnotes.de/index.php?topic=33526.msg210617#msg210617
						Do While Right(getstring,1) = "°"
							getstring = Left(getstring, Len(getstring)-1)
						Loop
					End If
Titel: Re: Meldung im LOG
Beitrag von: eknori am 15.11.06 - 10:00:04
funktioniert
Titel: Re: Meldung im LOG
Beitrag von: Thomas Schulte am 15.11.06 - 10:06:42
Das hoffe ich doch das das funktioniert ....  8)
Titel: Re: Meldung im LOG
Beitrag von: agentzwick am 17.11.06 - 08:52:30
Das sieht ja gut aus ! Da ich ja bekanntlich nicht soviel Ahnung habe - was muß ich denn jetzt machen ?
Titel: Re: Meldung im LOG
Beitrag von: Thomas Schulte am 17.11.06 - 10:05:18
Lib.appl.functions -> ProcessRTTags Funktion suchen und die Stelle suchen die mit "we have a item name ..." beginnt.

Dann den Endif von dem "if Itemtextexists ...." suchen und zwischen diesem und dem "Getstring = replace (....." diese Zeilen einfügen:
Code
' remove the "°" as long as it is the last sign in the string
' needed because of error issue mentioned here --> 
' http://atnotes.de/index.php?topic=33526.msg210617#msg210617
Do While Right(getstring,1) = "°"
getstring = Left(getstring, Len(getstring)-1)
Loop

Dann sollte das funktionieren.
Titel: Re: Meldung im LOG
Beitrag von: Franci am 21.12.06 - 09:28:51
Lib.appl.functions -> ProcessRTTags Funktion suchen und die Stelle suchen die mit "we have a item name ..." beginnt. ??


Lib.appl.functions? Und wo finde ich die?

Hatte gehofft mit den Info's hier dieses Problem zu lösen. (Löschen des Inhalts eines richText-Feldes, d.h. nur der Text keine Anhänge.)

http://atnotes.de/index.php?PHPSESSID=6fdb80a48504a01a7d682063706feceb&topic=34084.new#new

Verwende das Beispiel aus der Hilfe, dass leider zu dem folgenden Fehler im Log führt
"Restricted operation cannot cross logical boundaries"

Ist mir leider bisher nicht gelungen. Da ich leider immer noch nicht verstanden habe, wie Ihr das Problem gelöst habt.

Franci
Titel: Re: Meldung im LOG
Beitrag von: Franci am 21.12.06 - 21:05:39
Habe den selben Hinweis auch hier gefunden.

http://www.openntf.org/Projects/pmt.nsf/AllDocs/C8D445A5374ACBBF86257227002F201C?OpenDocument

Leider aber bisher auch noch nicht ganz verstanden was da eigentlich passiert.