Richtextitem

Gor

Well-known member
07.06.2005
517
1
#1
Всем привет...
Не могу разобраться вот в чём...
Формирую сообщение на отправку программно...(этот код я в основном обрезал)
Надо в одном месте (part5) вставить ссылку на открытие нового документа (newdoc)
Загвоздка вот в чём почему то у меня после прохождения
этого шага - part5 = doc.GetItemValue("rtitem")

part5 - значение его пустое в дебагере ("")

и естественно ничего не вставляется в - part1 = part1 & part5 & part2

Почему так????? ведь rtitem не пустое!!!!! в дебаггере тоже не пустое значение rtitem там текст AppendText.............и ссылка там же находиться должна наверна) (хотя я не знаю где её в дебагере увидеть можно) в rtitem - AppendDoclink........ ведь тоже есть....

part1,part2,part5 - у меня Variant....
так чёж за такое интересно?? Подскажите пож-та! Почему part5 - пустое!!!!?Ё
Код:
    Dim rtitem As NotesRichTextItem
Set rtitem = New NotesRichTextItem( doc, "Bodi" ) 
Call rtitem.AddNewLine( 1 )
Call rtitem.AppendText( "Workflow status:Please follow this doclink to the Access Request and either approve or deny it" )
Call rtitem.AppendDocLink( newdoc, db.Title )
 	
               part5 = doc.GetItemValue("rtitem")

part1 = part1 & part5 & part2
 
D

Domino6

#2
<!--QuoteBegin-Gor+15:02:2006, 13:29 -->
<span class="vbquote">(Gor @ 15:02:2006, 13:29 )</span><!--QuoteEBegin-->part5 - пустое
[snapback]30640" rel="nofollow" target="_blank[/snapback]​
[/quote]
Потому что ричтекст а док еще не сохранен. после сохранение документа можно будет обращатся к ричтексту как к итему

если уж так нужет текст внесенный то сначала сгенери текст в переменную и работая с ним
 

Gor

Well-known member
07.06.2005
517
1
#3
Текст как раз мне не нужен мне нужно эту ссылку получить!!!! DocLink и отобразить...в этом месте - (part5)

Код:
Call doc.Save(True,True)
Dim rtitem As NotesRichTextItem
Set rtitem = New NotesRichTextItem( doc, "Bodi" ) 
Call rtitem.AddNewLine( 1 )
Call rtitem.AppendDocLink( newdoc, db.Title )
Call doc.Save(True,True)
part5 = doc.GetItemValue("rtitem")
part1 = part1 & part5 & part2
поставил doc.Save... сейчас выдаёт ошибку на строчке part1 = part1 & part5 & part2 - Type mistmath... несоответствие типов
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
<!--QuoteBegin-Gor+15:02:2006, 15:04 -->
<span class="vbquote">(Gor @ 15:02:2006, 15:04 )</span><!--QuoteEBegin-->Текст как раз мне не нужен мне нужно эту ссылку получить!!!! DocLink и отобразить...в этом месте - (part5)
[snapback]30654" rel="nofollow" target="_blank[/snapback]​
[/quote]
Т.е. ссылку получить? И где отобразить?
Для ссылок есть класс NotesRichTextDocLink.
Но я не очень понял, что тебе нужно.
 
D

Domino6

#5
Ну так сделай Call rtitem.AppendDocLink( newdoc, db.Title ) еще раз
 

Gor

Well-known member
07.06.2005
517
1
#6
Для: Medevic
Т.е. ссылку получить? И где отобразить?
Для ссылок есть класс NotesRichTextDocLink.
Но я не очень понял, что тебе нужно.

Да надо получить ссылку чтобы по ней открывать документ по заданной уже форме...Про доклинк знаю немного. А отобразить надо в теле письма которое формируется программно из трёх частей.(part1,part5,part3). причём доклинк на документ надо обязательно вставить в определённое место тоесть в part5.

Код:
Dim newdoc As NotesDocument
Dim db As NotesDatabase
Set db = Session.CurrentDatabase
Set newdoc = New NotesDocument(db)
newdoc.Form = "Training Evaluation"

Dim part1,part2,part5 as Variant
Dim rtitem As NotesRichTextItem
Set rtitem = New NotesRichText( doc, "Bodi" ) 
Call rtitem.AddNewLine( 1 )
Call rtitem.AppendDocLink( newdoc, db.Title )
Call doc.Save(True,True)
Call rtitem.AppendDocLink( newdoc, db.Title )
part5 = doc.GetItemValue("rtitem")
part1 = part1 & part5 & part2
Попробовал доклинк вставить ещё раз после сохранения... но всё равно выдаёт Type mistmatch на строке part1=part1+part5+part2
точ за такое? ведь все partы Variant??и причём в дебаггере после действия part5 = doc.GetItemValue("rtitem")переменная part5 - пустая("")...( где же доклинк?

Если интересно могу код скинуть полностью формирования письма... ночто то не ладно всё равно в этом куске...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
Для: Gor
Ссылку можно вставить в NotesRichText. А что такое part1, part2, и т.д. и что ты сними потом делаешь я не очень понимаю.
 

Gor

Well-known member
07.06.2005
517
1
#8
Ссылку можно вставить в NotesRichText
Ну я ж её и вставляю туда!!!!
Call rtitem.AppendDocLink( newdoc, db.Title )!!!!!!!!!!!!!!!!!!!!

ну ок для полной картины скину весь код... просто не хотелось, потому что вникать в него надо...может прояснит немного...

Код:
Sub Click(Source As Button)
'Создаёт док на отправку                     

Dim session As New NotesSession
Dim doc As NotesDocument
Set doc = New NotesDocument( session.currentDatabase )

Dim uiws As New NotesUIWorkspace
If uiws.dialogBox( ".window.send", True, True, False, False, False, False, "Отправка приглашения на тест", doc ) Then
Dim body
body = doc.getFirstItem( "body" ).text

'Проверяем удалили ли юзер <login> и <link> из письма, если     
'удалил то закрываем

If Instr( body, "<link>" ) = 0 Or Instr( body, "<login>" ) = 0 Then
Msgbox "Текст <link> и <login> обязательны должны быть в body, они определяют месторасположения для ссылки и вашего логина, 16, "Survey"
Exit Sub
End If

'проверка кому отправить
If doc.getItemValue( "sendto" )(0) = "" Then Exit Sub

        'Создаём письмо на отправку
     Dim mail As New NotesDocument( session.currentDatabase )
     Dim part1, part2, part3, part5
     Call mail.replaceItemValue( "Form", "Memo" )
     Call mail.replaceItemValue( "Subject", doc.getItemValue( "subject" )(0))
part1 = Left( body, Instr( body, "<link>" ) -1 )
body = Right( body, Len( body ) -Len( part1 ) -6 )
part2 = Left( body, Instr( body, "<login>" ) -1 )
part3 = Right( body, Len( body ) -Len( part2 ) -7 )

         'создаю документ на который надо перейти по ссылке(доклинку)

               Dim newdoc As NotesDocument
Dim db As NotesDatabase
Set db = Session.CurrentDatabase
Set newdoc = New NotesDocument(db)
newdoc.Form = "Training Evaluation"

Call doc.Save(True,True)
         'создаю rtitem!!!!!!!
            Dim rtitem As NotesRichTextItem
Set rtitem = New NotesRichTextItem( doc, "Bodi" ) 

         'создаю ссылку!!!
Call rtitem.AppendDocLink( newdoc, db.Title )
Call doc.Save(True,True)

'пробую ещё раз вставить ссылку в rtitem
               Call rtitem.AppendDocLink( newdoc, db.Title )

       'хочу получить ссылку из rtitem!!!!
part5 = doc.GetItemValue("rtitem")
Call doc.Save(True,True)
  ПОСЛЕ ПОЛУЧЕНИЯ ССЫЛКИ В part5 всё РАВНО ЗНАЧЕНИЕ В ДЕБАГЕРЕ ПУСТОЕ!("")!!!!!!!!!Но почему оно пустое то?? Я ж AppendDocLink делаю туда!!! 
       
       'вставляю part5 ссылку в тело документа на своё место!!!!
part1 = part1 & part5 & part2
         ВОТ НА ЭТОЙ СТРОКЕ ОШИБКА TYPE MISTMATCH!!!!
'111111111111111111111111111111111111111111111

'Посылаю сообщение всем кто в send to
Dim cnt, userName, pwd, encryptUserName, encryptPwd
Dim lookupDoc As NotesDocument
cnt = 0
Forall sendto In doc.getFirstItem( "sendto" ).values
'Находим уникальную комбинацию..
userName = getName( sendTo, NAME_COMMON )
encryptUserName = Evaluate( |@Password( "| & userName & |" )| )
Do
'	pwd = calculatePassword( survey.universalID )
'	encryptPwd = Evaluate( |@Password( "| & pwd & |" )| )
Loop Until lookupDoc Is Nothing  
'ПРоводим доводку Body и отсылаем
'The @<Organization> makes sure no error is raised if the sendTo isn't found in the address book
Call mail.replaceItemValue( "Body", part1 +userName +"/" +pwd +part3 )
Call mail.send( False, sendto +"@" +getName( session.userName, NAME_ORGANIZATION))
Exit Sub
End Forall
End If
End Sub
НУ вот и всё может быть станет немного понятней...
Вопрос я обозначил в коде.....
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
Не пойму зачем весь этот зоопарк ?
Тебе нужно отправить документ mail с сылкой.
Вместо этого
<!--QuoteBegin-Gor+17:02:2006, 09:07 -->
<span class="vbquote">(Gor @ 17:02:2006, 09:07 )</span><!--QuoteEBegin-->Call mail.replaceItemValue( "Body", part1 +userName +"/" +pwd +part3 )
[snapback]30734" rel="nofollow" target="_blank[/snapback]​
[/quote]

Создай NotesRichTextItem в документе mail.
Set rtitem = New NotesRichTextItem(mail, "Body")
И вставь туда ссылку, текст и что хочешь.
 

Gor

Well-known member
07.06.2005
517
1
#10
ну в общем да...Мне надо отправить документ с ссылкой, генерированным паролем, именем пользователя, текстом.... ну просто хотел это всё как то разместить...нормально чтобы всё на своём месте было...просто видел такой способ уже создания письма и вот...решил сделать
 
G

Guest

#11
Я так обычно делаю.
Код:
	Set mdoc = db.CreateDocument	
mdoc.Form = "Memo"
mdoc.SendTo = doc.NotesName(0)
mdoc.Subject = "Уведомление"
Set rtitem = New NotesRichTextItem( mdoc, "Body" )

Call rtitem.AppendText("Согласуйте документ")
Call rtitem.AddNewLine(2)  
Call rtitem.AppendText("Ссылка на документ заказа -> ")
Call rtitem.AppendDocLink( doc, "документ" )	
Call mdoc.Send(False)
 

Gor

Well-known member
07.06.2005
517
1
#12
Да я тоже так обычно делаю :) Но вот решил сделать необычно
и не получилось! но всё равно всем спасибо за ответы огромное буду ковырять дальше :)