Данные о родительском представлении
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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.
Хитрая така реализация  |
|
 |
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 будет содержать как раз ссылку на объект, на который должен ссылаться экземпляр "Значение критерия"
*Экземпляр 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   |
|
Полезность: Нет оценки
|
Пока в ЦФТ эффективные манагеры куют бабло, мы им тут потихоньку подковываем кадры , штоле?
 |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Вт Мар 05, 2013 17:06   |
|
Полезность: Нет оценки
|
Может курсы обучающие для них организуем? С сертификацией  |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Мар 05, 2013 17:14   |
|
Полезность: Нет оценки
|
А че - Admin'а в долю, сертификат ЦФТклуба - это звучит, тож будем ковать бабло  |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|