Response To Response

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

  1. oxystile

    oxystile Гость

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Про копию не понял.
    А так копируй ссылку на главный документ при создании ответа.
     
  3. oxystile

    oxystile Гость

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ссылка просто делается.
    Создаешь поле (Computed When Compose) на форме ответного документа. Например, root.
    Пишешь код:
    @If(@IsNull(root); @InheritedDocumentUniqueID; root)
    В форме ставишь галку на "Formulas inherit values...".

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

    oxystile Гость

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: oxystile
    Должна быть ссылка на главный документ.
    Ответ создаётся формулой @Command([ComposeWithReference]; ...)?
     
  7. oxystile

    oxystile Гость

  8. Ronchik

    Ronchik Гость

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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]
    Это как раз то, что я предложил. :)
     
  10. Ronchik

    Ronchik Гость

    Для: 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]
    сорри гоню ...пятница блина
     
  11. Mihal

    Mihal Гость

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

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

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

    Call ws.EditDocument(true,doc)
     
  12. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Ronchik
    Как обычно в таких случаях пройтись агентом. По главным документам.
    Чтобы в поле ответов root была именно ссылка (кликабельная), а не текст, то делаем так.
    Получаем поле типа "Response Reference List". Для этого берем его или из первого ответа на главный документ, или создаем новый ответ (но не сохраняем его) и берём оттуда:
    Set NotesItem = NotesDocument.GetFirstItem("$REF")
    И скопируем его во все ответы (получаем рекурсивно) - Call NotesDocument.CopyItem(NotesItem, "root")
     
  13. oxystile

    oxystile Гость

    что-то у меня так не выходит....
    решила сделать простую проверку, вот что получилось: для документа типа 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 )
    -может в создании респонса что не так???
     
  14. Sandr

    Sandr Гость

    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


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

    Mihal Гость

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

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

    Sandr Гость

    А если кто булет умничать - завтра пойду за уши тянуть :) и не один.... С наступающим..
     
  17. Mihal

    Mihal Гость

    <!--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. И тебя забанят, и меня... За оффтоп...
     
  18. oxystile

    oxystile Гость

    спасибо! счас залью в код
     
  19. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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]; ...).
     
  20. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Вставь в форму Computed поле "GrandParent" с такой формулой:
    Код (Text):
    ugp:=@GetDocField($REF; "GrandParent");
    @If(@IsError(ugp)|@Text(ugp)=""; $REF; ugp)
     
Загрузка...

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