Ссылка на документ.

Тема в разделе "Lotus - Программирование", создана пользователем olegber, 5 дек 2007.

Статус темы:
Закрыта.
  1. olegber

    olegber Гость

    В поле (класс NotesRichTextItem) документа
    была создана ссылка на другой документ.
    (Call rtitem.AppendDocLink(ndoc, ndoc.ID(0)) ).
    Мне нужно узнать существует ли документ на который указывает эта ссылка в БД.
    Не знаю как "программно" обратиться по ссылке :D.
    Версия Lotus 5.0.

    Спасибо за помощь.
     
  2. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Код (Text):
         
    Dim session As New NotesSession      
    Dim doc As NotesDocument ' главный документ на сервере
    Set doc = .........
    Dim rti As NotesRichTextItem    ' поле BugReferences для временного хранения ссылок
    Set rti = doc.GetFirstItem(BR)
    If rti Is Nothing Then
    Messagebox "Document contains no links",, "No links"
    uidoc.FieldClear(BR)
    Call uidoc.Refresh()
    Exit Sub
    End If
    Dim rtnav As NotesRichTextNavigator
    Set rtnav = rti.CreateNavigator
    Dim rtlink As NotesRichTextDocLink
    Set rtlink = rtnav.GetFirstElement(RTELEM_TYPE_DOCLINK)
    While Not(rtlink Is Nothing )              
    If rtlink.DocUNID = String$(32, "0") Then
    Messagebox "Link does not have a doc component",, "No doc"
    Exit Sub
    End If
    Dim dblink As New NotesDatabase("", "") 'база данных документа на который указывает ссылка
    If Not dblink.OpenByReplicaID(session.CurrentDatabase.Server, rtlink.DbReplicaID) Then
    Messagebox "No local replica",, "Cannot find database"
    Exit Sub
    End If     
    Dim linkDoc As NotesDocument ' документ на который указывает ссылка
    Set linkDoc = dblink.GetDocumentByUNID(rtlink.DocUNID)
    If linkDoc Is Nothing Then
    Messagebox "Can not find AFER",, "No doc"
    Exit Sub
    End If 
    .................
    Set rtlink = rtnav.GetNextElement(RTELEM_TYPE_DOCLINK)
    Wend
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: PavelT100
    Версия Lotus 5.0. :)
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-PavelT100+5:12:2007, 11:17 -->
    <span class="vbquote">(PavelT100 @ 5:12:2007, 11:17 )</span><!--QuoteEBegin-->Dim rtlink As NotesRichTextDocLink
    [snapback]88450" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Сказал же автор - версия 5ка
     
  5. olegber

    olegber Гость

    В 5 версии,как уже было замечено выше, классов NotesRichTextDocLink и NotesRichTextNavigator
    к сожелению нет. :)
    Вопрос поднимался на многих форумах, такое ощущение,что в 5 версии решения нет...
     
  6. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: olegber
    имхо призодит на ум разобрать содержимое рт-поля и искать унид докумета и проверять его на существование
     
  7. olegber

    olegber Гость

    Для: Morpheus
    Всё перебрал, разобрал.
    Не нашёл таких свойств или методов в NotesRichTextItem для получения UNID документа.
    Может быть как-нибудь через дизайн?
     
  8. serEJa Shabalin

    serEJa Shabalin Гость

    Может использовать служебное поле $Links
     
  9. olegber

    olegber Гость

    Для: serEJa Shabalin
    Такого поля нет в этих документах.
    Ссылки содержатся в поле NotesRichTextItem.

    Для: serEJa Shabalin
    Документы создавались не с помощью формы, а примерно так set doc=db.CreateDocument.
    И следовательно у них нет никаких служебных полей типа $Links,$Revisions...
    Хотя если их открыть с помощью формы и пересохранить то поле $Links с нужным UNID создаётся
    (это уже хорошо).
    Одна проблема документов около 10000 :)
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: olegber
    @Command([ToolsRefreshSelectedDocs]) не помогает?
     
  11. olegber

    olegber Гость

    Из всего выше сказанного решение моей задачи сводится к следующему:
    1)Обновить все документы(например командой @Command([ToolsRefreshSelectedDocs])), чтобы появились поля $links.
    2)Из этих полей взять необходимый UNID.
    Этот метод для меня скорее всего не подойдёт: так как поля (а их около 100) в документах содержат информацию из других БД. и обновлять все документы будет "непрактично".
    Подругому видимо никак нельзя в 5 версии lotus.
     
  12. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Почитайте как тут - может поможет
     
  13. olegber

    olegber Гость

    Не помогло.. ;)
     
Загрузка...
Статус темы:
Закрыта.

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