Как связать несколько документов?

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

  1. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Есть карточка семьи, нужно к ней каким то образом создать и прикрепить карточки детей, входящих в эжту семью, причем карточка детей является другой формой, нежели карточка семьи. При этом список детей должен отображаться в виде списка внутри формы, т.е. это должна быть вьюха с возможностью двойного щелчка по строчке для редактирования\просмотра инфы....

    Как все енто реализовать???
     
  2. fvoice

    fvoice Гость

    Так ты же сам ответил на свой вопрос: использование ответных документов и встроенных вью..

    Вот здесь описание как это реализовать
     
  3. Ronchik

    Ronchik Гость

    Для: SkyRanger
    для того что - бы документ сделать ответом достаточно создать в нем поле $REf в котором будет содержаться UNID родителя......название формы роли не играет
     
  4. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Для: Ronchik, SkyRanger
    Только поле это должно быть не текстовым, а спецовым (reference), поэтому вручную его создавать не стоит :D Лучше просто форму, по которой создаются ответы, сделать "ответной" на первой вкладке свойств формы.
     
  5. Ronchik

    Ronchik Гость

    Для: LuMee
    не согласен с тобой....использую для добавления вот такую процедурку
    Код (Text):
    Call respNote.MakeResponse(mainNote)
    ..документы созданы по одной и той-же форме :D
     
  6. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Для: Ronchik
    Ну, это понятно. Я с т.з. пользовательского интерфейса имел ввиду :)
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Можно и вообще без respons'ов обойтись, храня в каком-либо предефайненом поле UNID главного документа и фильтируя embedded view именно по нему.
    Я бы именно так и сделал, ибо responses не внушают мне доверия...
     
  8. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Для: Omh
    Могут возникнуть трудности при копировании доков в другую базу, да и в случае необходимости по-человечески изобразить родительские и ответные документы в одной вью без респонсов не обойтись. В крайнем случае, одно другому не мешает :)
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: LuMee
    А при копировании респонсов в другую базу всё будет нормально?
    Спрашиваю, ибо чувствую, что мои знания в области респонсов не очень сильны.
    Насколько я знаю, они автоматом станут респонсом к выделнному документу, что, по мне, сомнительная фича.
    Про копировании доков сменится UNID - это известно.

    Кстати, view с респонсами, на мой взгляд, тоже не позволяет человечески отобразить документы.
    В том случае, если мне надо из респонса показать несколько колонок (кол-во, цена, сумма).
    Или я ошибаюсь?

    Заранее сенк :)
     
  10. Ronchik

    Ronchik Гость

    Для: Omh
    ты ошибаешься :)
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Обоснуй :)
    Я же говорю, что все случаи, когда я сталкивался с респонсами, не принесли мне удовлетворения их работой.
    Поэтому особого смысла я в них не вижу.
    Хотелось бы ошибаться, но главное, понять, где я ошибался.
     
  12. Ronchik

    Ronchik Гость

    Для: Omh
    Смысл в том что ты можешь отображать иерархию документов не только встроеным видом но и в конкретном виде + кодом можно работать уже с пакетом документов которые могут содержать общие поля например поле статуса....а чтобы отображать ответы тебе достаточно указать на столбце в виде настроечку и все .....только надо помнить что у тебя в БД присутствуют ответы и исходя из этого факта писать код...вобщем очень удобная вещь
     
  13. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Ronchik
    Ok, присмотрюсь в очередной раз.
     
  14. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    При копировании документов иерархия ответов сохраняется, причем как при копировании с помощью простого Ctrl+C - Ctrtl+V, так и программным путем (метод CopyToDatabase или как-то так у NotesDocument). Как это достигается - хз, но работает (проверял)
    Насчет отображения нескольких колонок для респонсов во вью - тут врать не буду, не пробовал, хотя, имхо, ничего экстраординарного происходить не должно: заводишь колонку и пишешь в нее формулу, дергающую поля из респонса. Наверное, должно прокатить.
    Есть у респонсов еще полезная вещь: для конкретного документа можно быстро получить коллекцию непосредственных ответов на него - свойство Responses. В случае с ручной связью через UNID'ы пришлось бы уже выполнять поиск по БД, что не так быстро и не так просто.
    В общем, бояться респонсов не надо, только помнить, что их возможности тоже не безграничны <_<
     
  15. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Прокомментирую чуть:
    1.Визуально: Альтернатива иерархии респонсов - иерархия категорий, что далеко не всегда годится.
    2.Колонки ДО "респонсной" (которая к стати не обязательна) отображаются нормально
    3.Иерархические вьюхи ГОРАЗДО дороже обычных
     
  16. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Я сделал так:

    Код (Text):
        Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = workspace.CurrentDocument
    Dim uidoc1 As NotesUIDocument
    Dim doc As NotesDocument
    Set doc = uidoc.Document
    Dim session As New NotesSession
    Dim user As String


    Set uidoc1 = workspace.ComposeDocument("","","reg_card_child")

    Set doc1 = uidoc1.Document
    Call doc1.MakeResponse( doc)
    Хмм, а как мне теперь для ембед вьюхи выбрать все респозны для текущего открытого документа?

    Т.е. отобразить список всех респознов этого документа,сейчас выводятся все респозны
     
  17. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
  18. SkyRanger

    SkyRanger Active Member

    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Блин совсем запутался.

    Есть документ А - главный (форма main).

    Есть документ Б - подчиненый (форма - child) причем child может быть много

    Формы у них естрественно разные. Как теперь правильно добавить респонз по форме child.

    и как потом сделать выборку документов Б для открытого в данный момент документа А???
     
  19. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    У формы child ставишь "Тип формы" в "Ответ" или "Ответ на ответ". На форме main создаешь, скажем, action, в котором будет типа такого:
    Код (Text):
    @Command([Compose]; "child")
    По нажатии на сию кнопку будет создаваться документ по форме child, который сразу будет ответом на открытый документ main. Секрет в том, что когда создается документ по форме типа "Ответ" или "Ответ на ответ", такой документ автоматом делается ответом на текущий (открытый или выбранный во вью) документ.
    Насчет отобразить документы на форме. Делаешь вью с формулой:
    Код (Text):
    SELECT Form = "child"
    , первую колонку делаешь с формулой
    Код (Text):
    @Text($Ref)
    и указываешь ей, что она сортируемая по категориям (это на второй или третьей вкладке свойств колонки вроде).
    Далее на форме main через меню "Создание" создаешь "Внедренный объект" - "Внедренное представление". Указываешь, что оно должно показывать ту вью, которую ты только что создал. В свойстве "Отображать едниственную категорию" (Show single category) пишешь:
    Код (Text):
    @Text(@DocumentUniqueID)
     
  20. fvoice

    fvoice Гость

    Формула отбора у вью какая? Нужно отбирать документы ~ SELECT form="main" & @Responses
    Есть ли первая категоризированная колонка содержащая: @Text(@DocumentUniqueID)?
    Стоит ли галка "Show responses in document hierarchy"?
    Встроенная вью содержит @Text(@DocumentUniqueID) в "Show single category"?
     
Загрузка...

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