Richtextitem

Тема в разделе "Lotus - Программирование", создана пользователем Gor, 15 фев 2006.

  1. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Всем привет...
    Не могу разобраться вот в чём...
    Формирую сообщение на отправку программно...(этот код я в основном обрезал)
    Надо в одном месте (part5) вставить ссылку на открытие нового документа (newdoc)
    Загвоздка вот в чём почему то у меня после прохождения
    этого шага - part5 = doc.GetItemValue("rtitem")

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

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

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

    part1,part2,part5 - у меня Variant....
    так чёж за такое интересно?? Подскажите пож-та! Почему part5 - пустое!!!!?Ё
    Код (Text):
        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    
     
  2. Domino6

    Domino6 Гость

    <!--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]
    Потому что ричтекст а док еще не сохранен. после сохранение документа можно будет обращатся к ричтексту как к итему

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

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Текст как раз мне не нужен мне нужно эту ссылку получить!!!! DocLink и отобразить...в этом месте - (part5)

    Код (Text):
    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... несоответствие типов
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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.
    Но я не очень понял, что тебе нужно.
     
  5. Domino6

    Domino6 Гость

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

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Для: Medevic
    Т.е. ссылку получить? И где отобразить?
    Для ссылок есть класс NotesRichTextDocLink.
    Но я не очень понял, что тебе нужно.

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

    Код (Text):
    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 - пустая("")...( где же доклинк?

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Gor
    Ссылку можно вставить в NotesRichText. А что такое part1, part2, и т.д. и что ты сними потом делаешь я не очень понимаю.
     
  8. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Ну я ж её и вставляю туда!!!!
    Call rtitem.AppendDocLink( newdoc, db.Title )!!!!!!!!!!!!!!!!!!!!

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

    Код (Text):
    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
    НУ вот и всё может быть станет немного понятней...
    Вопрос я обозначил в коде.....
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не пойму зачем весь этот зоопарк ?
    Тебе нужно отправить документ 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")
    И вставь туда ссылку, текст и что хочешь.
     
  10. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    ну в общем да...Мне надо отправить документ с ссылкой, генерированным паролем, именем пользователя, текстом.... ну просто хотел это всё как то разместить...нормально чтобы всё на своём месте было...просто видел такой способ уже создания письма и вот...решил сделать
     
  11. Гость

    Я так обычно делаю.
    Код (Text):
        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)
     
  12. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Да я тоже так обычно делаю :) Но вот решил сделать необычно
    и не получилось! но всё равно всем спасибо за ответы огромное буду ковырять дальше :)
     
Загрузка...

Поделиться этой страницей