Response To Response

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

oxystile

Гость
#1
создаю response to response, хочу увидеть внутри него ссылку но лучще копию на главный документ.
(т.е. внутри хочу видеть не его родителя а так сказать "дедушку")
подскажите как это можно реализовать?
 
O

oxystile

Гость
#3
Про копию не понял.
А так копируй ссылку на главный документ при создании ответа.
ну ссылку теоретически знаю как, а практически не получается пока...
про копию: хотелось что-то типа такого результатата как при @Command([ComposeWithReference]; ""; "Visa"; 1+2+4)
но при такой формуле мы получим ссылку на родителя, а мне нужен сымый главный, начальный документ
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#4
Ссылка просто делается.
Создаешь поле (Computed When Compose) на форме ответного документа. Например, root.
Пишешь код:
@If(@IsNull(root); @InheritedDocumentUniqueID; root)
В форме ставишь галку на "Formulas inherit values...".

Если копию, то, наверное, ручками только. На код кнопки создания ответного документа.
 
O

oxystile

Гость
#5
по этой формуле документ типа Response to response в поле root получает ссылку на документ типа "Response" а хотелось бы на общего предка всех респонсов
 
R

Ronchik

Гость
#8
Для: oxystile
можно просто изначально хранить во всех ответах UNID главного..но это будет работать только в случие если с базой еще никто не работал ......
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#9
<!--QuoteBegin-Ronchik+7:09:2007, 17:02 -->
<span class="vbquote">(Ronchik @ 7:09:2007, 17:02 )</span><!--QuoteEBegin-->можно просто изначально хранить во всех ответах UNID главного..но это будет работать только в случие если с базой еще никто не работал ......
[snapback]77508" rel="nofollow" target="_blank[/snapback]​
[/quote]
Это как раз то, что я предложил. :)
 
R

Ronchik

Гость
#10
Для: Medevic
а может у него база уже юзаеться тогда что предложишь ??

<!--QuoteBegin-Medevic+7:09:2007, 14:22 -->
<span class="vbquote">(Medevic @ 7:09:2007, 14:22 )</span><!--QuoteEBegin-->@If(@IsNull(root); @InheritedDocumentUniqueID; root)
[snapback]77490" rel="nofollow" target="_blank[/snapback]​
[/quote]
это на мой взгляд будет работать только для ответов а не для ответ на ответ

<!--QuoteBegin-Ronchik+7:09:2007, 16:52 -->
<span class="vbquote">(Ronchik @ 7:09:2007, 16:52 )</span><!--QuoteEBegin-->это на мой взгляд будет работать только для ответов а не для ответ на ответ
[snapback]77513" rel="nofollow" target="_blank[/snapback]​
[/quote]
сорри гоню ...пятница блина
 
M

Mihal

Гость
#11
Можно сделать эмуляциюю ссылки. Картинка красивая в виде документика (ссылочки) помещается на форму. А под ней - скрипт. Который раскручивает всё генеалогическое древо до самого верхнего документа.

Примерно так.

Set doc=curdoc
while doc.ParentDocumentUNID<>""
Set doc=db.GetDocumentByUNID(doc.ParentDocumentUNID)
wend

Call ws.EditDocument(true,doc)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#12
Для: Ronchik
Как обычно в таких случаях пройтись агентом. По главным документам.
Чтобы в поле ответов root была именно ссылка (кликабельная), а не текст, то делаем так.
Получаем поле типа "Response Reference List". Для этого берем его или из первого ответа на главный документ, или создаем новый ответ (но не сохраняем его) и берём оттуда:
Set NotesItem = NotesDocument.GetFirstItem("$REF")
И скопируем его во все ответы (получаем рекурсивно) - Call NotesDocument.CopyItem(NotesItem, "root")
 
O

oxystile

Гость
#13
что-то у меня так не выходит....
решила сделать простую проверку, вот что получилось: для документа типа Response в поле с формулой @Text(@InheritedDocumentUniqueID) я получаю его собственный id! а не родителя хотя @IsResponseDoc возвращает 1.

документ Response создается так:
Set docResp = db.CreateDocument
Call docResp.MakeResponse( doc )
docResp.Form="Response"
docResp.DocID=doc.DocID(0) -просто запоминаю id родителя
Call docResp.Save( True, True )
-может в создании респонса что не так???
 
S

Sandr

Гость
#14
1-й вариант:
на квериоупен пишем

if source.IsNewDoc then
if curdoc.IsResponse then
on error resume next
set parentdoc = db.getdocumentbyUNID(curdoc.getItemValue('$ref')(0))
if not parentdoc is nothing then
while parentdoc.isresponse
set parentdoc = db.getdocumentbyUNID(parentdoc.getitemvalue($ref)(0))
if not parentdoc is nothing then
if parentdoc is nothing then
msgbox "нету дока"
exit sub
end if
end if
wend
on error goto 0
curdoc.replaseitemvalue(firstUNID, parentdoc.universalID)
end if
end if
end if

2-й вариант
Function getSuperParent(ADoc As NotesDocument) As String
Dim pdoc As NotesDocument

If ADoc Is Nothing Then Error 1000, "Document = nothing"
If ADoc.IsResponse Then
On Error Resume Next
Set pdoc = ADoc.ParentDatabase.GetDocumentByUNID(ADoc.ParentDocumentUNID)
Err = 0
On Error Goto 0
If Not(pdoc Is Nothing) Then
Dim punid As String
punid = getSuperParent(pdoc)
If punid = "" Then
getSuperParent = pdoc.UniversalID
Else
getSuperParent = punid
End If
End If
End If
End Function


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

Mihal

Гость
#15
Шурик как всегда не ищет простых путей :).

Зачем менять значения итемов в документах, если можно всё красиво оформить на уже имеющихся данных?:angry:
 
S

Sandr

Гость
#16
Шурик как всегда не ищет простых путей :).

Зачем менять значения итемов в документах, если можно всё красиво оформить на уже имеющихся данных?:angry:
А если кто булет умничать - завтра пойду за уши тянуть :) и не один.... С наступающим..
 
M

Mihal

Гость
#17
<!--QuoteBegin-Sandr+7:09:2007, 16:50 -->
<span class="vbquote">(Sandr @ 7:09:2007, 16:50 )</span><!--QuoteEBegin-->А если кто булет умничать - завтра пойду за уши тянуть и не один.... С наступающим..
[snapback]77524" rel="nofollow" target="_blank[/snapback]​
[/quote]
Сипасиба. Захочешь оторвать мне ухи - ищи меня в лесах, расположеных возле Бориспольской трассы. Ты меня услышиш :))).

P.S. И тебя забанят, и меня... За оффтоп...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#19
<!--QuoteBegin-oxystile+7:09:2007, 18:28 -->
<span class="vbquote">(oxystile @ 7:09:2007, 18:28 )</span><!--QuoteEBegin-->решила сделать простую проверку, вот что получилось: для документа типа Response в поле с формулой @Text(@InheritedDocumentUniqueID) я получаю его собственный id! а не родителя хотя @IsResponseDoc возвращает 1.

документ Response создается так:
Set docResp = db.CreateDocument
Call docResp.MakeResponse( doc )
docResp.Form="Response"
docResp.DocID=doc.DocID(0) -просто запоминаю id родителя
Call docResp.Save( True, True )
-может в создании респонса что не так???
[snapback]77520" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот в этом всё и дело.
Ответный документ надо создавать на собаках: @Command([ComposeWithReference]; ...).
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#20
создаю response to response, хочу увидеть внутри него ссылку но лучще копию на главный документ.
(т.е. внутри хочу видеть не его родителя а так сказать "дедушку")
подскажите как это можно реализовать?
Вставь в форму Computed поле "GrandParent" с такой формулой:
Код:
ugp:=@GetDocField($REF; "GrandParent");
@If(@IsError(ugp)|@Text(ugp)=""; $REF; ugp)