Представление, переход по условию - по типу значения как? 
	  На страницу 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  и переход по обратным ссылкам в ядре заложен - а тут .... | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |