Представление с дочерними документами

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

  1. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    367
    Симпатии:
    13
    Пытался уже найти здесь ответ, но те обсуждения, что тут встречаются по отображению респонсов во вьюхе, не дали мне ответа на мой вопрос.

    Имеем в БД три типа документов:
    1. Родитель (пускай будет с формой Parent)
    2. Дочка (форма Responce) - респонс к Родителю
    3. Внучка (форма Responce) - респонс к Дочке.
    Мне нужно нарисовать вьюху, где проведен отбор по ключевому слову в поле Дочки. Во вьюхе должны отображаться эти Дочки вместе с привязанными к ним Внучками.

    Я создал вьюху с откл. галкой отбражения респонсов в иерархии. Добавил Выборку по форме Responce и ключевому слову из поля Дочки, которая выглядит примерно так:
    SELECT form="Responce"&(DochkaField="Искомый текст 1"|DochkaField="Искомый текст 2")|@AllChildren
    Во вьюхе создал некатегоризированную колонку для отображения значения одного поля из формы Responce.

    В итоге я, действительно, получил во вьюхе некоторую выборку респонсов (Дочки и Внучки), но общим смешанным списком, в котором не ясно, кто к кому привязан. Одинаково заполненного поля в форме у Дочки и ее Внучки, к сожалению, нет.

    Как-то можно категоризировать такую вьюху, чтобы Внучки наглядно отображались под своей Дочкой?

    P.S. Проанализировав ситуацию, пришел к выводу, что надо отображать еще и Родителя, т.к. в самой Дочке и Внучке мало информации.

    ИТОГО:Как сделать выборку по значению поля из формы Дочки, но отобразить и связанную с ней Внучку, и ее родительский документ?
     
  2. Alexander (Criz)

    Alexander (Criz) Гость

    пиши агента и скидывай всё в папку...
     
  3. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    не уверен что получиться плясать от дочки. Надо всё таки влясать от родителя(в рожителе хранить флаги какиенибуть) + задавать условия для наследников
     
  4. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    367
    Симпатии:
    13
    Блин, агента я уже не осилю... Со вьюхой как-то проще было бы, но из всех своих поисков пришел к выводу, что во вьюхе в Селекте плясать можно только сверху вниз, от родителя к потомку.

    Впрочем, можно попытаться. Может кто подскажет, от чего хотя бы отталкиваться при написании агента?

    Morpheus, это все понятно, в своем первом посте я уже высказал свое огорчение по поводу отсутствия в родителе каких-то доп.полей, флагов и т.д. Задача возникла именно сейчас в текущей БД с текущей структурой и имеет локальный разовый характер.

    В качестве обходного решения, видимо, проще всего не в папку пересовывать доки, а натравить агента на текущие документы и значения парочки полей из своего потомка сохранить у себя, и так от потомка к потомку пройтись: Родитель возьмет себе значения Дочки, Дочка - значения Внучки.

    Но вот как это реализовать? ))
     
  5. K-Fire

    K-Fire Гость

    Я правильно понял что во вьюхе документы Родитель не должны вообще отображаться?

    Если да, то делайте так:
    Дочки и внучки должны быть связаны не через поле $REF, а каком-нить другим полем, а во вьюхе потом используйте DEFAULT $REF := YourRef;

    А поле YourRef можно сделать указав в форме внучки в этом поле формулу @InheritedDocumentUniqueID.
     
  6. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    367
    Симпатии:
    13
    Родителей отображать можно. Мне главное, выборку сделать на определенное значение по одному полю, которое содержится только в Дочке, а отобразить нужно и связанного с Дочкой Родителя и Внучку.

    Твой совет поможет решить проблему на новой базе с новыми документами, в которых будет содержаться доп.служебное поле. Мне же нужно обработать уже имеющиеся документы в старой БД.
     
  7. K-Fire

    K-Fire Гость

    Ну тогда без прописывания атрибута в родителя не обойтись.


    Конверсионный агент придется писать по любому.
     
  8. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    367
    Симпатии:
    13
    Так и сделал, следующим постом приведу код агента, авось, кому пригодится.
     
  9. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    367
    Симпатии:
    13
    Задачка выполнена.
    Для истории - вот код агента, сливающий инфу от потомков к родителю, чтобы потом можно было построить вьюху по родителю.
    Код (Text):
    _Child:=@DbLookup ("";"";"(view)"; @Text(@DocumentUniqueID); "RespField";[FailSilent]);
    @If(_Child=""; @Return("");"");
    _Child2:=@DbLookup ("";"";"(view)"; @Text(@DocumentUniqueID); "RespFieldDate";[FailSilent]);
    @SetDocField($Ref; "F1"; RespField);
    @SetDocField($Ref; "FD1"; RespFieldDate);

    @SetDocField($Ref; "F2"; _Child);
    @SetDocField($Ref; "FD2"; _Child2)
     
Загрузка...

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