CftClub.ru
Клуб специалистов ЦФТ-Банк

Данные о родительском представлении

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Yurik-s
Участник


Вступление в Клуб: 01.03.2013
СообщениеПт Мар 01, 2013 13:05   Данные о родительском представлении Ответить с цитатой
Полезность: Нет оценки
Я начинающий разработчик в этой системе, так что, возможно спрошу тривиальную вещь, но самостоятельно(и поиском по форуму) найти ответа не удалось.

В общих чертах ситуация следующая:
Есть представлениt некоего ТБП "Критерии", в нем есть ссылка на справочник "Значения критериев".
Мы проваливаемся из этого представления в представление "Значения критериев" и он, на данный момент, пуст. Ни одного значения еще не вводилось.
Выбираем операцию "Добавить".

И вот тут есть необходимость(для заполнения позже обратной ссылки) на форме этой операции показать данные того экземпляра ТБП "Критерии", из которого мы пришли сюда.
Подскажите, в какую сторону рыть?

P.S.
Я вижу, что по кнопочке "SQL" в шапке представления "Значения критериев" видно сам SQL-запрос с указанным там в явном виде
... AND REF1 = 123456
значения идентификатора того экземпляра из которого мы сюда пришли(как раз, что мне нужно).
Также я видел на других примерах, что иногда в шапке самого навигатора пишется из какого экземпляра(подставляется значение поля NAME) мы оказались в текущем представлении
К слову, интересно, что нужно выставить, чтобы это работало и для моих представлений.
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПт Мар 01, 2013 13:37    Ответить с цитатой
Полезность: Нет оценки
this%parent(родительский тип).[нужный реквизит родительского типа]
Yurik-s
Участник


Вступление в Клуб: 01.03.2013
СообщениеПт Мар 01, 2013 13:54    Ответить с цитатой
Полезность: Нет оценки
Возможно я не совсем точно выразился в исходном посте, но в моем случае речь идет не о наследовании, а о ссылке на другой ТБП(foreign key).

Указанная вами конструкция ничего не возвращает, так как у моего типа нет парента, как такового.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Мар 01, 2013 14:51    Ответить с цитатой
Полезность: Нет оценки
Посмотрите ТБП
Настройки. Значения
FP_TUNE_VAL

там операции Добавить, Изменить вызывают "внешний валидатор" - операцию VALIDATE, там все таинство через this%parent.

Хитрая така реализация Smile
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПн Мар 04, 2013 06:04    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
this%parent(родительский тип).[нужный реквизит родительского типа]


я не верно выразился.
В моем посте родительский тип = тип откуда вы провалились в массив
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеПн Мар 04, 2013 11:34    Ответить с цитатой
Полезность: Нет оценки
Yurik-s пишет:

Есть представлениt некоего ТБП "Критерии", в нем есть ссылка на справочник "Значения критериев".
Мы проваливаемся из этого представления в представление "Значения критериев" и он, на данный момент, пуст. Ни одного значения еще не вводилось.
Выбираем операцию "Добавить".

И вот тут есть необходимость(для заполнения позже обратной ссылки) на форме этой операции показать данные того экземпляра ТБП "Критерии", из которого мы пришли сюда.
Подскажите, в какую сторону рыть?


Yurik-s пишет:
Возможно я не совсем точно выразился в исходном посте, но в моем случае речь идет не о наследовании, а о ссылке на другой ТБП(foreign key).

Указанная вами конструкция ничего не возвращает, так как у моего типа нет парента, как такового.


Если справочник "Значения критериев" является массивом ТБП "Критерии", то this%parent должен возвращать значение, иначе опишите подробнее структуру данных.

НО! Хочу предостеречь от использования данного модификатора. При компиляции он транслируется в конкатенацию выборок из всех возможных родительских ТБП. Хорошо, если таких ТБП мало, но, если сделать такой вызов из ::[PROPERTIES] или ::[FACT_OPER], то селект будет страшным..

Сам не использую %parent, и всех своих отучиваю от него! Пишите прямые выборки, однозначно привязывая нужный родительский класс.
То же самое с модификатором %classparent
Yurik-s
Участник


Вступление в Клуб: 01.03.2013
СообщениеВт Мар 05, 2013 05:35   Данные о родительском представлении Ответить с цитатой
Полезность: Нет оценки
Да, массив у меня не используется.

Структура в общих чертах такова:
ТБП "Критерии"
CODE VARCHAR2
NAME VARCHAR2
Представление, созданное в этом типе, из которого происходит переход в ТБП "Значения критериев", в целом выглядит так:
type main is
select x(x.[CODE] : c_code
,x.[NAME] : c_name
,crit.[CANON_REF] : c_crit_ref)
in ["Критерии"], (["Значения критериев"] : crit)
where crit.[CANON_REF](true) = x%id;

ТБП "Значения критериев"
CODE VARCHAR2
NAME VARCHAR2
CANON_REF объявлено как REF-to-ТБП "Критерии"
VALUE VARCHAR2

Можно ли при такой схеме реализовать то, что я описал в первом посте?
Если нет, то подскажите плиз, какие еще объекты дополнительно необходимы в этих ТБП?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Мар 05, 2013 05:47   Re: Данные о родительском представлении Ответить с цитатой
Полезность: 1
Yurik-s пишет:
Я начинающий разработчик в этой системе, так что, возможно спрошу тривиальную вещь, но самостоятельно(и поиском по форуму) найти ответа не удалось.

В общих чертах ситуация следующая:
Есть представлениt некоего ТБП "Критерии", в нем есть ссылка на справочник "Значения критериев".
Мы проваливаемся из этого представления в представление "Значения критериев" и он, на данный момент, пуст. Ни одного значения еще не вводилось.
Выбираем операцию "Добавить".

И вот тут есть необходимость(для заполнения позже обратной ссылки) на форме этой операции показать данные того экземпляра ТБП "Критерии", из которого мы пришли сюда.
Подскажите, в какую сторону рыть?

P.S.
Я вижу, что по кнопочке "SQL" в шапке представления "Значения критериев" видно сам SQL-запрос с указанным там в явном виде
... AND REF1 = 123456
значения идентификатора того экземпляра из которого мы сюда пришли(как раз, что мне нужно).
Также я видел на других примерах, что иногда в шапке самого навигатора пишется из какого экземпляра(подставляется значение поля NAME) мы оказались в текущем представлении
К слову, интересно, что нужно выставить, чтобы это работало и для моих представлений.


Вы уж определитесь, для операции вам это нужно, или для представления.

Дело в том, что переходы между представлениями отслеживаются на уровне АРМ Навигатора, а вот в операции "Добавить" (а она находится на уровне БД) ни this (есть особые случаи*), ни ссылки на экземпляр представления, из которого вы пришли, нет. И не будет. И в общем случае быть не может.

Потому что существуют такие представления, которые не имеют отображения в базе. И из таких представлений тоже будут доступны те же операции, что и из "нормальных" представлений. Есть также способ перейти в представление справочника "Значения критериев" по обратной ссылке (Ctrl+R). Наконец, Вы можете зайти в справочник через меню справочники->все справочники. Так что то, что Вы видите по кнопочке SQL (AND REF1 = 123456) - это фикция.

К сожалению, для вас есть только один выход - сделать на форме операции кнопку-ссылку на ТБП Критерии, и каждый раз выбирать заново объект, из которого вы пришли в эту операцию.

Только что придумал ещё способ. Не делайте операцию "Добавить" в справочнике "Значения критериев". Сделайте операцию "Добавить значение критерия" в ТБП Критерии. Удобнее будет. Ведь, находясь в ТБП Критерии, экземпляр this будет содержать как раз ссылку на объект, на который должен ссылаться экземпляр "Значение критерия" Smile

*Экземпляр this можно использовать только если значение критерия не первое.
Yurik-s
Участник


Вступление в Клуб: 01.03.2013
СообщениеВт Мар 05, 2013 06:21    Ответить с цитатой
Полезность: Нет оценки
Почему вы решили, что я не определился? Я с самого начала говорил, что эти данные мне нужны в операции. Упоминание тектса кнопки SQL представления было к тому, что ID экземпляра из которого мы пришли где-то есть и его, возможно, можно достать(через какое-нить мифическое системное представление, запрос найти значение этой биндовской переменной).
Представление, упомянутое в последнем комментарии приведено, просто на всякий случай(может я что-то не так в нем сделал), как часть реализованной структуры.


Вариант
Цитата:
"Сделайте операцию "Добавить значение критерия" в ТБП Критерии"

рассматривался как возможный выход из ситуации, но хотелось уточнить,есть ли все же возможность реализовать это ранее изложенным методом.

Жаль, что это недоступно.
Спасибо, что сэкономили мне время на изучение этого вопроса.
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеВт Мар 05, 2013 09:05   Re: Данные о родительском представлении Ответить с цитатой
Полезность: 2
Yurik-s пишет:
...

Можно ли при такой схеме реализовать то, что я описал в первом посте?


Нельзя!
Переделайте структуру данных на массив.

В ЦФТ есть некоторые фишки, сочетающие структуру данных с юзер-интерфейсом. Поэтому при проектировании структуры стоит задумываться как она "ляжет" на Навигатор.

Yurik-s пишет:

Если нет, то подскажите плиз, какие еще объекты дополнительно необходимы в этих ТБП?


Надо создать массив над типом "Значения критериев", затем в ТБП "Критерии" создать реквизит с типом "массив "Значения критериев""
Yurik-s
Участник


Вступление в Клуб: 01.03.2013
СообщениеВт Мар 05, 2013 12:48    Ответить с цитатой
Полезность: Нет оценки
Всем спасибо за советы и объяснение тонкостей. Буду переделывать под массивы.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Мар 05, 2013 13:00    Ответить с цитатой
Полезность: Нет оценки
Пока в ЦФТ эффективные манагеры куют бабло, мы им тут потихоньку подковываем кадры , штоле?
Smile
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеВт Мар 05, 2013 17:06    Ответить с цитатой
Полезность: Нет оценки
Может курсы обучающие для них организуем? С сертификацией Laughing
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Мар 05, 2013 17:14    Ответить с цитатой
Полезность: Нет оценки
А че - Admin'а в долю, сертификат ЦФТклуба - это звучит, тож будем ковать бабло Smile
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru