Представление, переход по условию - по типу значения как?
На страницу 1, 2 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июн 24, 2013 06:20  Представление, переход по условию - по типу значения как? |
|
Полезность: Нет оценки
|
Добрый день.
Хочется странного от навигатора цфт.
А именно - в представлении завести 2 поля (класс_ид, ссылка_на_объект) и из этого представления переходить в зависимости от Класс_ид на умолчательное представление класса.
Т.е. есть в конструкторе Представления блок 'Навигация' и там возможен переход по условию. Указывается также Тип и Представление - куда переходить собственно.
В идеале, ТИП и Представление 'Куда переходить' подставлять бы динамически в момент клика.
Вот такое хочется. Я много хочу от Навигатора?[/b] |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пн Июн 24, 2013 09:14   |
|
Полезность: Нет оценки
|
В чом задача ? Пытаетесь соорудить единое окно обработки всех продуктов (кредиты, РКО, депозиты, СЯ и т.п.) одного клиента, штоле ? |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пн Июн 24, 2013 09:32   |
|
Полезность: Нет оценки
|
Как вариант не представление, а операцию с гридом и там по щелчку переход с подменой представления... |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июн 24, 2013 09:54   |
|
Полезность: Нет оценки
|
vtar пишет: | В чом задача ? Пытаетесь соорудить единое окно обработки всех продуктов (кредиты, РКО, депозиты, СЯ и т.п.) одного клиента, штоле ? |
Угу, вродь того...
Сервис всяческих ошибок. Предполагается, что джоба (может не одна) крутится и заполняет таблицу ошибок. Пользователь открывает представление с этими ошибками, читает текст и переходит к ошибочному объекту для редактирования. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июн 24, 2013 09:59   |
|
Полезность: Нет оценки
|
Alkov пишет: | Как вариант не представление, а операцию с гридом и там по щелчку переход с подменой представления... |
наверное, реализуемо.
только гриды напрягают - по сравнению с Представлениями работы по заполнению Грида намного больше, да и щелчок придется обрабатывать в бэйсике |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июн 24, 2013 10:15   |
|
Полезность: Нет оценки
|
Damir пишет: | Alkov пишет: | Как вариант не представление, а операцию с гридом и там по щелчку переход с подменой представления... |
наверное, реализуемо.
только гриды напрягают - по сравнению с Представлениями работы по заполнению Грида намного больше, да и щелчок придется обрабатывать в бэйсике |
Тыкс...
Вот Представление для просмотра уже есть.
Что если мы навесим операцию 'перехода по ссылке' - заводим Простую операцию для класса, цепляем к Представлению - чтобы вызывалась из Представления.
Остается в Операции перейти к нужному Представлению (модально, с фильтрацией по конкретному ИД-у).
как?
Наверное на форме операции завести кучу кнопочек типа "Массив класса N" - для каждой потенциальной вьюшки перехода. Остается автоматом при выводе формы операции начать нужную кнопку.
и потом закрыть форму так же автоматом по выходу из представления по кнопке выбора.
сумбурно как-то. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Июн 25, 2013 09:05   |
|
Полезность: Нет оценки
|
Вчера запилил такую штуку - из строки представления забираем в операцию через this класс и ID (для примера - вьюха плплюс выводит 1 документ, 1 кредит, 1 депозит), затем в операции жмется кнопка, на которую навешано представление класса (динамически через клиент-скрипт и валидатор, определяется в запросе из criteria).
Проблемы:
1) почему - то не отфильтровывается запись с нужным ID, а помечается строкой как при создании из конструктора
2) надо че то дорабатывать с представлениями где обязательные поля (напр. Список документов в документах= поле *Дата ), там поднимается представление с полями * и требует заполнить
Если нужно, могу кинуть код. |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Вт Июн 25, 2013 10:44   |
|
Полезность: Нет оценки
|
а как фильтруешь .ViewFilter ? |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Июн 25, 2013 10:48   |
|
Полезность: 1
|
Alkov пишет: | Как вариант не представление, а операцию с гридом и там по щелчку переход с подменой представления... |
Будь проще.
pl/plus-представление
Код: |
type main is
select a(
cast_to([REFERENCE], decode(mod(rownum, 2)
, 0, 'AC_FIN:123456'
, 1, 'CLIENT:987654'
) :objref
) in ::[DUMMY] all
where rownum < 3
;
|
Вместо циферок подставь нужные идентификаторы |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Вт Июн 25, 2013 12:39   |
|
Полезность: Нет оценки
|
vtar пишет: | Вчера запилил такую штуку - из строки представления забираем в операцию через this класс и ID (для примера - вьюха плплюс выводит 1 документ, 1 кредит, 1 депозит), затем в операции жмется кнопка, на которую навешано представление класса (динамически через клиент-скрипт и валидатор, определяется в запросе из criteria).
..............
|
Начал было такое делать - забил.
Во вьюхе сделано N полей (последними столбцами справа чтоб не мешали) с переходом в нужные Представления по ентеру. Пользователям предложено жать ентер на нужном столбце.
Ну и что, что столбцов там будет 10 штук... |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Июн 25, 2013 13:19   |
|
Полезность: Нет оценки
|
Damir пишет: |
Во вьюхе сделано N полей (последними столбцами справа чтоб не мешали) с переходом в нужные Представления по ентеру. Пользователям предложено жать ентер на нужном столбце.
Ну и что, что столбцов там будет 10 штук... |
А чем абстрактная ссылка-то не нравится? Как в предыдущем сообщении?
Переход осуществляется в нужный тип, представление навигатор даёт выбрать, если нет по умолчанию... Единственно - поле содержит непонятные пользователю буковки и циферки... |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Июн 25, 2013 14:00   |
|
Полезность: Нет оценки
|
Alkov пишет: | а как фильтруешь .ViewFilter ? |
ну да
проверка
Код: |
begin
if p_message = 'VALIDATE' then
if p_info = 'V_DATA' then
--{begin pl/sql}
V_OBJ := this;
V_ID := V_OBJ%id;
begin
select r((r.short_name)) in criteria%rowtype
--where r.class_id = V_OBJ%classparent and r.DEF = 1
where r.class_id = V_OBJ%class and r.short_name = 'VW_CRIT_'||V_OBJ%class
into V_DATA;
--{end pl/sql}
exception when others then
select r(max(r.short_name)) in criteria%rowtype
--where r.class_id = V_OBJ%classparent and r.DEF = 1
where r.class_id = V_OBJ%classparent and r.short_name = 'VW_CRIT_'||V_OBJ%classparent
into V_DATA;
--{end pl/sql}
end;
end if;
end if;
end;
|
клиент скрипт
Код: |
Public Function Main(LastControl)
if LastControl is Nothing then
object3.ViewShortName = "VW_CRIT_PR_CRED"
end if
if LastControl is Object3 then
object3.ViewFilter = "{&ID} = [V_ID]"
call Form1.ScriptServerValidate (nothing, "V_DATA")
object3.ViewShortName = V_DATA.text
end if
Main = True ' Результирующее значение валидатора (True или False)
Execute V_VB.TEXT
V_VB.Text = ""
if Main = false then
Exit Function
end if
End Function
|
|
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Ср Июн 26, 2013 02:26   |
|
Полезность: Нет оценки
|
object3.ViewFilter = "{&ID} = [V_ID]"
а если так
object3.ViewFilter = "ID = [V_ID]" ? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июн 26, 2013 06:57   |
|
Полезность: Нет оценки
|
Random пишет: |
А чем абстрактная ссылка-то не нравится? Как в предыдущем сообщении?
|
Просто с pl/Plus представлениями дела не имел - вот пока расчухал...
Итог - у меня не получилось сделать как Вы описали - не компилится.
Может, подскажете в чем дело - ну если вдруг ошибка очевидная.
Представление сделал
Код: | type main is
select u( 1 :ID
, sysdate + level + 1 : C_DATE
, 'PERSONAL_AC:2160206675' : obj_ref_0
--, cast_to([REFERENCE], 'PERSONAL_AC:2160206675' ) : obj_ref_1
) in dual%rowtype
connect by level <= add_months(sysdate,12) - sysdate
; |
Последний Каст_то() закомментирован - без него представление даже работает - проверял.
При попытке раскомментировать - выдает ошибку компиляции
Код: | ORA-02291: нарушено ограничение целостности (COMP.FK_CRIT_COLUMNS_T_C_ID) - исходный ключ не найден
ORA-06512: на "COMP.PLP$CURSOR", line 6309
ORA-01403: данные не найдены
ORA-06512: на "COMP.DATA_VIEWS", line 979
ORA-06512: на "COMP.DATA_VIEWS", line 1285
ORA-06512: на line 1
begin COMP.Data_Views.Create_Vw_Crit(:crit_id, false); end; |
Запись в таблице имеется:
Код: | Select count(1) from Z#PERSONAL_AC where id =2160206675
|
Администратор словаря данных
Версия 6.332.0.42
Версия ТЯ 7.1.2.2
Версия рабочего места Администратора 6.33.10 |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июн 26, 2013 07:41   |
|
Полезность: Нет оценки
|
Random пишет: | Переход осуществляется в нужный тип, представление навигатор даёт выбрать, если нет по умолчанию... Единственно - поле содержит непонятные пользователю буковки и циферки... |
Попробовал задействовать обычные Представления (не pl\Plus).
ВАУ! Но т.е. не совсем ВАУ - последняя ложка дегтя все испортила...
Пошагово...
Завожу новую колонку:
Код: | Базовый Тип := Ссылки (!)
Ссылка := A5_1.ID (предполагалось, что нави будет брать эту ссылку - фигушки)
Источник данных := 'PERSONAL_AC:'||A5_1.ID (Обобщенная ссылка по совету Random - бочка меда). |
все - сохраняю, все компилится - запускаю Навигатор, Поле отображается прилично - со звездочками. Пробую перейти по ссылке - получаю плюху:
Код: | ORA-01722 Неверное число |
Представление для перехода выбрано правильно Навигатором по обобщенной ссылке(!)
Ложка дегтя - Нави подставляет вместо ИД обобщенную ссылку как есть 'PERSONAL_AC:454446' - собсно ловим ORA-01722.
Код: | ....
FROM $$$.VW_CRIT_28118 WHERE (ID = ?) ORDER BY U_1, U_5, C_3, C_4, U_6, C_5, C_1
Параметры:
ClassID = PERSONAL_AC
P1 = 'PERSONAL_AC:2160071903' |
Вообще, Нави мог бы делать попытку по ИД-у определить его класс и перейти на умолчательное Представление этого класса.
Есть же единый seq_id и %parent и переход по обратным ссылкам в ядре заложен - а тут .... |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|