Notesrichtextitem и Link

Тема в разделе "Lotus - Программирование", создана пользователем lepa, 6 май 2010.

  1. lepa

    lepa Гость

    Всем привет!
    Есть поле NotesRichTextItem в нем ссылка на документ из другой базы.
    Пытаюсь её получить

    Код (Text):
    Set rtitem = doc.GetFirstItem( "Body" )
    If ( rtitem.Type = RICHTEXT ) Then
    If Not Isempty(rtitem.EmbeddedObjects) Then
    ..... Сюда я никогда не попадаю
    End If             
    End If
    Проверка на пустоту всегда говорит о том что в риче ничего нету, но в реале там есть ссылка, как мне её получить?
    Спасибо за рание.
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Код (LotusScript):
    Dim rtnav As NotesRichTextNavigator
    Set rtnav = rtitem.CreateNavigator
    If rtnav.FindFirstElement(5) Then
    ...
     
  3. keen

    keen Гость

    В Helpe есть такой пример:

    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim rti As NotesRichTextItem
    Dim rtnav As NotesRichTextNavigator
    Dim rtlink As NotesRichTextDocLink
    Sub Initialize
    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument
    Set rti = doc.GetFirstItem("Body")
    Set rtnav = rti.CreateNavigator
    If Not rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
    Messagebox "No doclinks in Body item",, "No doclinks"
    Exit Sub
    End If
    Set rtlink = rtnav.GetElement
    If rtlink.DocUNID = String$(32, "0") Then
    Messagebox "Link does not have a doc component",, _
    "No doc"
    Exit Sub
    End If
    Dim linkDb As New NotesDatabase("", "")
    If Not linkDb.OpenByReplicaID("", _
    rtlink.DbReplicaID) Then
    Messagebox "No local replica",, "Cannot find database"
    Exit Sub
    End If
    Dim linkDoc As NotesDocument
    On Error Goto InvalidUNID
    Set linkDoc = linkDb.GetDocumentByUNID(rtlink.DocUNID)
    Messagebox linkDoc.Subject(0),, "Subject of document"
    Exit Sub
    InvalidUNID:
    Messagebox "Cannot locate document",, "No document"
    Exit Sub
    End Sub

    название топика Examples: DocUNID property
     
  4. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Можно вот тоже спросить, о ссылках в RT-поле. Есть база Notes на сервере. Есть файлик, который кладется в определенную папку TEMP. Задача состоит в том, что в RT-поле созданного документа Лотус надо добавить ссылку на этот файлик. При нажатии на эту ссылку должно открываться диалоговое окно, как для выбора документов для вложения, в котором будет открыта эта папка с этим файликом. Папка TEMP лежит на той же машине, на которой стоит сервер Домино. Такое возможно в Лотусе - сделать в документе Notes ссылку на файлик, который лежит в какой-то папке на диске? Нужна имеенно ссылка на файлик, не вложение этого файлика. Заранее спасибо )
     
  5. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    > ссылка на файлик в RTF поле.
    Делаете ярлык для файла или папки штатными средствами WIN и этот ярлык вкладываете в поле. Все дела.
     
  6. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Спасибо, забыл сказать, что это надо программно средствами LS. Как через LS ярлык сделать? Потом, как понимаю, надо вложить его в РТ средствами AppendText?
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в условиях антивирусов это может не пройти, да и зачем - есть url...
    file:///resource/path
    где resource м.б. сетевой путь типа server\shredname
    либо driveletter://
    наклон слэшей ЕМНИП может быть нормальный (т.е. - вправо)
     
  8. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Делаю вот так. Ссылка вставляется в docPoint, поле RTLink. Папка, в который лежит файл, открыта как общий ресурс

    Dim rtitem As NotesRichTextItem
    Dim object As NotesEmbeddedObject

    Set rtitem = New NotesRichTextItem( docPoint, "RTLink" )
    Set object = rtitem.EmbedObject _
    ( EMBED_OBJECTLINK, "", "//путь к серверу/папка/12345.txt")

    Ссылка не получается ( ни с прямыми слэшами, ни с обратными
     
  9. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    потому что не так делаете...
    EmbedObject используется только для вставки аттачей, либо OLE объектов.
    Если хотите win-ярлык прикрепить, то да это поможет, но win-ярлык надо будет создать предварительно.
    lmike, как я понимаю, предлагает просто прописать текстом url в RT-поле, тогда этот текст будет преобразован в линк.
    При нажатии откроется.
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    при отправке по мэлу - преобразует в линк, как написал savl
    если нужно работать с сущ. доком то DXL
    или MIME
    все это - просто откроет урл (из дока)
    а вот про какие-то ссылки на то чтобы диалог получить - ничего не понял (зачем ваще там ссылка)
    ЗЫЖ через DXL модно и кнопку вставить...
     
  11. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Добавляю текстом URL так file:///путь к серверу/папка/12345.txt. Ссылка добавляется, но при нажатии файл не находит

    а вот про какие-то ссылки на то чтобы диалог получить - ничего не понял (зачем ваще там ссылка)

    Это хотят для экономии пространства на диске - чтоб все файлы лежали в одном месте, а из документов Лотус ссылаться на них. Хотят, чоб при программном прикреплении файла он физически появлялся на ftp, а в в лотусе оставалась только ссылка, по нажатии на которую открывается папка где лежит файл либо стандартное лотусовое окно, что делать с файлом.
     
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    И какая тут экономия? ))) Идиотия сплошная, простите это не к вам.
    Файл на сервере, где стоит Domino, в папке TEMP!!! А если у вас папку TEMP кто-то грохнет, что делать будете? )))
    Если загрузить в документ эти файлы, то они будут так же на сервере где стоит Domino.
    Только сжаты через LZ1, и скажем 5 Мб файл ужмется до 140 Кб.
    И так, где экономия то?
     
  13. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Не так выразился. Это для синхронизации Лотус и Web. Чтоб 1 файл не дублировался в двух местах, чтоб и Notes, и Web ссылались на одну эту папку TEMP. Вот для такой экономии. Просто думал, это не в тему
     
  14. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Хм... не знаю стоит ли так усложнять, крепить ярлыки и ссылки...
    Если путь к этой папке известен всегда, то сделайте просто кнопку на форме.
    "Открыть папку с файлами", а внутри команду:
    Код (LotusScript):
        Dim res As Variant
    res = Shell({rundll32 url.dll,FileProtocolHandler "C:\Java\"},1)
    Как понимаете - вариант для windows
    вместо C:\Java\ пишете путь к вашей папке, но в кавычках.
    И надо уходить от TEMP на какой-нибудь сетевой диск и там папку.
     
  15. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    Я сделал кнопку с помощью DXL, как написано здесь, где показал Imike http://ozinisle.blogspot.ru/2010/11/lotuss...hotspot-to.html.
    В тестовой базке добавление поля RT со ссылкой к документу, выделенному в представлении, Sub Click пишу так

    Dim session As New NotesSession
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem

    Dim result As String

    '** grab the first selected doc in the view
    Set doc = session.CurrentDatabase.UnprocessedDocuments.GetFirstDocument
    Set rtitem = doc.GetFirstItem("Body")
    If (rtitem Is Nothing) Then
    Set rtitem = New NotesRichTextItem(doc, "Body")
    End If

    Call AppendHotspotLink(rtitem,"file:///C:/TEMP/12345.txt")

    '** save and exit
    Call doc.Save(True, True)

    все получилось, файл 12345.txt открывается )
    А вот сделал точно так же в своей библиотеке, которую вызывает агент, то ссылка в поле RT документа создается, но не работает.
    В библиотеке у меня так. В одном Sub создается документ docNew, указываю форму (на ней явно есть поле RT - RTField) потом в этот документ добавляю ссылку на файл 12345.txt в папке TEMP

    Dim rtitem As NotesRichTextItem
    Set rtitem = New NotesRichTextItem( docNew, "RTField" )

    AppendHotspotLink rtitem,"file:///C:/TEMP/12345.txt"

    docNew.Save True, True

    Добавил без изменений функцию AppendHotspotLink, XmlConvert, как по ссылке выше.
    Ссылка в документе появляется, но при нажатии на нее ничего не происходит ( Тут какой-то нюанс?
     
  16. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
    А, понял, наверно это из-за того, что RT-поле у меня на субформе лежит, которая подтягивается к основной форме через ComputedSubform. Всем спасибо!
     
Загрузка...
Похожие Темы - Notesrichtextitem Link
  1. seoman2
    Ответов:
    35
    Просмотров:
    1.172
  2. Serduko
    Ответов:
    11
    Просмотров:
    2.143
  3. cLif
    Ответов:
    14
    Просмотров:
    4.412
  4. WebWare Team
    Ответов:
    1
    Просмотров:
    994
  5. D1kiy
    Ответов:
    2
    Просмотров:
    79

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