| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		VSV056 Участник - экстремал
 
  Вступление в Клуб: 25.11.2010
  | 
		
			
				 Чт Апр 21, 2016 14:27   Хук Заявки. Получение в строчку [DECL_GET_VALUE] | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Коллеги, доброго дня!
 
 
Нужно создать хук "Заявки. Получение в строчку" [DECL_GET_VALUE]
 
Он работает по старому механизму, т.е не через расширения и перекрытия. Т.о. для его создания нужно скопировать операцию из "Расширения. Дистрибутив" в "Расширения. Банк". 
 
Почему-то это не помогает. 
 
Что нужно еще сделать? | 
			 
		  | 
	
	
		  | 
	
	
		vtar Эксперт
 
  Вступление в Клуб: 20.03.2009
  | 
		
			
				 Чт Апр 21, 2016 14:57    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				ну эээ ...
 
 
может быть в справочник "Вычисляемые параметры" прописать те вычпары которые вы там щитаете ?
 
 
А точно по старому ?
 
 
Т.е. в Расширения и перекрытия. Точки вызова   не нвдо прописывать ? | 
			 
		  | 
	
	
		  | 
	
	
		vtar Эксперт
 
  Вступление в Клуб: 20.03.2009
  | 
		
			
				 Чт Апр 21, 2016 14:59    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| Если дело в вычпарах, там еще вроде нужно запустить операшку потом "Сгенерировать или обновить библиотеки ...." | 
			 
		  | 
	
	
		  | 
	
	
		VSV056 Участник - экстремал
 
  Вступление в Клуб: 25.11.2010
  | 
		
			
				 Чт Апр 21, 2016 15:15    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				ну... как бы если это новый метод то там в дистрибутивных хуках:
 
 	  | Код: | 	 		  
 
begin
 
   null;
 
   &call_meth
 
end; | 	  
 
и
 
 	  | Код: | 	 		  pragma include ('APPAUX_CALLPOINT.COMPILE_LIB');
 
&setcallpoint('BKI_CALC_PARAMS','БКИ. Расчет параметров',2) | 	  
 
 
а в  искомом хуке:
 
 
 	  | Код: | 	 		  begin
 
   return null;
 
end;
 
 | 	  
 
 
Далее до выч. паров как мне кажется еще рано. 
 
и как мне помниться давным-давно добавляя новый кодик  в хук я в выч. пары ничего нового не добавлял. Оно само работало.
 
 
В банковский хук с целью тестирования нами втиснута вот такая вещь:
 
 	  | Код: | 	 		  begin
 
   IF 1=1 THEN 
 
      Pragma error('хук работает!');
 
   END IF;
 
   return null;
 
end; | 	  
 
 
Так вот при вызове операции печати в заявках на получение кредита  (Alt+W) никакой ошибки нет.
 
 
Плюс к этому операцию печати переделали на OOXML и я пока не разобрался это она не дергает хук, или с хуком что-то не то. | 
			 
		  | 
	
	
		  | 
	
	
		vtar Эксперт
 
  Вступление в Клуб: 20.03.2009
  | 
		
			
				 Чт Апр 21, 2016 15:29    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | VSV056 пишет: | 	 		  
 
В банковский хук с целью тестирования нами втиснута вот такая вещь:
 
 	  | Код: | 	 		  begin
 
   IF 1=1 THEN 
 
      Pragma error('хук работает!');
 
   END IF;
 
   return null;
 
end; | 	  
 
 
Так вот при вызове операции печати в заявках на получение кредита  (Alt+W) никакой ошибки нет.
 
 | 	  
 
хук тебе зачем нужен ?
 
 
alt+w
 
-- Все остальное ищем в Get_Value
 
		return IdDecl.[GET_VALUE](p_info, P_Adds);
 
 
в GET_VALUE
 
RetStr := ::[HOOK].[VARS].ref_hook.[DECL_GET_VALUE](this, P#CODE, P#ADDS);
 
	if RetStr is not null then
 
		return RetStr;
 
	end if;
 
 
То есть тебе какой-то кодик надо подать неизвестный  на вход, просто так хук не запустится | 
			 
		  | 
	
	
		  | 
	
	
		vtar Эксперт
 
  Вступление в Клуб: 20.03.2009
  | 
		
			
				 Чт Апр 21, 2016 15:31    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				то есть шаблон какой нить покорёжить что ли
 
воткнуть туда незнакомый операшке кодик, чтоб позвался хук ... | 
			 
		  | 
	
	
		  | 
	
	
		VSV056 Участник - экстремал
 
  Вступление в Клуб: 25.11.2010
  | 
		
			
				 Чт Апр 21, 2016 15:44    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | vtar пишет: | 	 		  
 
хук тебе зачем нужен ?
 
 
alt+w
 
-- Все остальное ищем в Get_Value
 
		return IdDecl.[GET_VALUE](p_info, P_Adds);
 
 
в GET_VALUE
 
RetStr := ::[HOOK].[VARS].ref_hook.[DECL_GET_VALUE](this, P#CODE, P#ADDS);
 
	if RetStr is not null then
 
		return RetStr;
 
	end if;
 
 
То есть тебе какой-то кодик надо подать неизвестный  на вход, просто так хук не запустится | 	  
 
 
Неизвестный параметр  TEST передавал. Смутило то что вместо ошибки просто возвращался NULL, хотя pragma error была перед return. Похоже где-то выше все это обвернуто в EXCEPTION )))
 
 
В общем то вылечили вот так:
 
 
 	  | Код: | 	 		  v_str varchar2(250);
 
 
begin
 
   if P#CODE = 'TEST' then
 
      v_str := 'дело было в ретерне';
 
   end if;
 
   return v_str;
 
end;
 
 | 	  
 
 
Вопрос можно считать закрытым. 
 
Спасибо за участие. | 
			 
		  | 
	
	
		  | 
	
	
		 |