вставка ссылок кодом

  • Автор темы oxystile
  • Дата начала
O

oxystile

#1
1-й документ по специальной кнопке выполняет создание док-та в другой базе
Set db =s.GetDatabase("" ,"forPOKassa1.ntf")
Set doc = db.CreateDocument()
doc.Form = "newDoc"


пусть созданный док, -это док №2
в доке №2 юсер заполняет поля, сохраняет, в коде на сохранении ссылка на этот док заносится в рич поле дока №1 Set rt = New NotesRichTextItem(doc1, "doc_link") , -№1
*****
Call rt.AppendDocLink(doc, FromMail)
Call rt.Update()

НО: если из документа №1 формировать 1 или более документов типа док№2, то ссылки увидим только после переоткрытия дока №1
можно ли как-то организовать динамическое появление ссылок, т.е. нажали сохранить и ссылка сразу видна в поле дока №1, пока просто идей 0?
 

Omh

Lotus team
04.07.2007
2 210
1
#3
Ну, по-моему, давно известно, что при апдейте RT поля документ надо переоткрывать.

Как вариант: можно, например, RT заменить на Embedded view и каждую ссылку хранить отдельным мелким залинкованным доком, который на QO откроет то, что нас интересует.
И мантейнить такую штуку гораздо удобнее, нежели RT.
 
O

oxystile

#4
to Medevic
в коде случай другой, там находясь в докумете, ссылку надо поместить в этот же документ, поэтому возможно использование uidoc. У меня же находясь на одном документе ссылку надо вставить в другой док(расположен он в другой базе) т.о. Set uidoc = ws.EditDocument(True, uidoc.Document, False) вроде как не прокатит.

to Omh
Embedded view ,будет конечно понадежнее чем rich text поле (его не собъешь)
(в Embedded view я храню документы, кот. создаются при сохранении документа типа 2, и хранят в себе UniversallD этих созданных документов, линки и пр. нужную инфу, т.о. одному документу типа №2 в некоторой базе*базы могут быть различны* соответсвует один документ в базе для документа типа №1 ). Надеюсь, не сильно запутала.
Так вот, этот Embedded view на форме обновляется тоже не сразу, добавленный док вижу только после переоткрытия, Call viewR.Refresh тоже не помогает
 

Omh

Lotus team
04.07.2007
2 210
1
#5
Для: oxystile
Ну это только про создании первого дока в embedded view.
Начиная со второго всё нормально.
Так что это можно списать на фичу, а не на баг <_<
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
<!--QuoteBegin-oxystile+29:10:2007, 18:30 -->
<span class="vbquote">(oxystile @ 29:10:2007, 18:30 )</span><!--QuoteEBegin-->в коде случай другой, там находясь в докумете, ссылку надо поместить в этот же документ, поэтому возможно использование uidoc. У меня же находясь на одном документе ссылку надо вставить в другой док(расположен он в другой базе) т.о. Set uidoc = ws.EditDocument(True, uidoc.Document, False) вроде как не прокатит.
[snapback]83465" rel="nofollow" target="_blank[/snapback]​
[/quote]
Тогда я что-то не понял это:
<!--QuoteBegin-oxystile+29:10:2007, 13:25 -->
<span class="vbquote">(oxystile @ 29:10:2007, 13:25 )</span><!--QuoteEBegin-->если из документа №1 формировать 1 или более документов типа док№2, то ссылки увидим только после переоткрытия дока №1
[snapback]83397" rel="nofollow" target="_blank[/snapback]​
[/quote]
 
O

oxystile

#7
to Omh
нет, сколько бы не добавила, все равно увижу только после преоктрытия

to Medevic
из №1 формирую №2, при сохранении №2, хочу поместить на него ссылку в поле дока №1.
результат: 2 различных дока из различных БД содержат внутри себя ссылки друг на друга
 

Omh

Lotus team
04.07.2007
2 210
1
#8
Для: oxystile
Не надо view.Refresh - это для background объекта.
Попробуй workspace.ViewRefresh куда-нить воткнуть.
 
S

serEJa Shabalin

#9
UNID - документа мы знаем сразу после создания, в т.ч. ReplicaID и viewID
Т.е. можно например засовывать на перехватчике события QuerySave второго дока NotesURL ссылку в многозначное текстовое поле первого дока
Далее варианты Computed поля с Hotspot или ListBox с отловом события Change и открытием ссылки, или в 2 действия: выбрать ссылку в ListBox и нажать на кнопку для ее открытия
 

susinmn

Well-known member
16.10.2007
529
3
#10
отличный вариант с Hotspot. привязываешь на текст и по clik в процедуре по unid получаешь doc...
 

morpheus

скриптописец
07.08.2006
3 915
1
#11
Для: oxystile
Я бы попробовал комбинировать вариант перехвата события QuerySave 2го докумета и переоткритие первого.

Или же зделать просто напросто ссылки - вручную, а не в РТ полях
 
O

oxystile

#12
тут еще следует предусмотреть тот случай, когда захотят "старые доки"(давно выполненные и уже неиспользуемые) перекинуть в архив. Т.О. перенося документ в архив следует запомнить его новый id, найти все доки, кот. на него ссылаются и поменять в них ссылки...
т.о. ссылки должны быть сделаны так, чтобы их впоследствии было легко найти и изменить ;)
 
D

D!m@n

#14
Если делать вот это:
Код:
Call rt.AppendDocLink(doc, FromMail)
на QueryOpen документа (проверив предварительно, что документ - новый), то ничего закрывать и переоткрывать не придется.
Для данной задачи такое решение вроде бы подходит.