• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

Wanderstep

Lotus Team
23.03.2006
491
66
Пытался уже найти здесь ответ, но те обсуждения, что тут встречаются по отображению респонсов во вьюхе, не дали мне ответа на мой вопрос.

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

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

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

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

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

ИТОГО:Как сделать выборку по значению поля из формы Дочки, но отобразить и связанную с ней Внучку, и ее родительский документ?
 
пиши агента и скидывай всё в папку...
 
не уверен что получиться плясать от дочки. Надо всё таки влясать от родителя(в рожителе хранить флаги какиенибуть) + задавать условия для наследников
 
пиши агента и скидывай всё в папку...
Блин, агента я уже не осилю... Со вьюхой как-то проще было бы, но из всех своих поисков пришел к выводу, что во вьюхе в Селекте плясать можно только сверху вниз, от родителя к потомку.

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

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

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

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

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

А поле YourRef можно сделать указав в форме внучки в этом поле формулу @InheritedDocumentUniqueID.
 
Я правильно понял что во вьюхе документы Родитель не должны вообще отображаться?
Родителей отображать можно. Мне главное, выборку сделать на определенное значение по одному полю, которое содержится только в Дочке, а отобразить нужно и связанного с Дочкой Родителя и Внучку.

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

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


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

Конверсионный агент придется писать по любому.
 
Так и сделал, следующим постом приведу код агента, авось, кому пригодится.
 
Задачка выполнена.
Для истории - вот код агента, сливающий инфу от потомков к родителю, чтобы потом можно было построить вьюху по родителю.
Код:
_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)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab