1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Response To Response

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

  1. oxystile

    oxystile Гость

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

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

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

    oxystile Гость

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

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

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

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

    oxystile Гость

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

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

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

    oxystile Гость

    Репутация:
    0
  8. Ronchik

    Ronchik Гость

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

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

    Репутация:
    0
    Регистрация:
    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 Гость

    Репутация:
    0
    Для: 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 Гость

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

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

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

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

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

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

    oxystile Гость

    Репутация:
    0
    что-то у меня так не выходит....
    решила сделать простую проверку, вот что получилось: для документа типа 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 Гость

    Репутация:
    0
    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 Гость

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

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

    Sandr Гость

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

    Mihal Гость

    Репутация:
    0
    <!--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 Гость

    Репутация:
    0
    спасибо! счас залью в код
     
  19. Medevic

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

    Репутация:
    0
    Регистрация:
    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
    Lotus team

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

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