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

Представление, переход по условию - по типу значения как?
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
Эксперт
Резидент CftClub


Вступление в Клуб: 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
Эксперт
Резидент CftClub


Вступление в Клуб: 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 и переход по обратным ссылкам в ядре заложен - а тут ....
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

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