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

  • Автор темы olegber
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

olegber

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

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

PavelT100

#2
Код:
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
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
<!--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ка
 
O

olegber

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

morpheus

скриптописец
07.08.2006
3 915
1
#6
Для: olegber
имхо призодит на ум разобрать содержимое рт-поля и искать унид докумета и проверять его на существование
 
O

olegber

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

serEJa Shabalin

#8
Может использовать служебное поле $Links
 
O

olegber

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

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

olegber

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