Подмена дистрибутивной операции 
	   
	     | 
   
 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		eugene_smith Участник
 
  Вступление в Клуб: 26.12.2015
  | 
		
			
				 Сб Дек 26, 2015 13:52   Подмена дистрибутивной операции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Добрый день!
 
 
Буду признателен, если кто-то подскажет адекватное решение задачи. Требуется подменить логику дистрибутивной операции. Есть предположение, что возможен следующий вариант реализации:
 
1. Сделать расширение операции
 
2. Из секции валидации расширения plp-вызовом запускать замещающую операцию
 
3. После plp-вызова завершать выполнение операции.
 
 
Валидация расширения, таким образом, имеет вид:
 
 	  | Код: | 	 		  begin
 
   if 1 = 1 then
 
      stdio.put_line_buf('<% PLPCALL %THIS%.[TEST_OP2]() %>');
 
      return;
 
   end if;
 
   &BASE$SETVARS;
 
   &BASE$VALIDATE;
 
   &BASE$GETVARS;
 
end;
 
 | 	  
 
 
Тело операции-расширения:
 
 	  | Код: | 	 		  begin
 
   if 1 = 1 then
 
      return;
 
   end if;
 
   &BASE$SETVARS;
 
   &BASE$EXECUTE;
 
end; | 	  
 
 
Реализация упирается в тот факт, что несмотря на безусловный возврат из секции валидации (вместо return также был опробован exit с тем же результатом), отображается форма основной операции.
 
 
Есть ли возможность сделать полноценную подмену? | 
			 
		  | 
	 
	
		  | 
	 
	
		prog Эксперт
 
  Вступление в Клуб: 03.03.2008
  | 
		
			
				 Сб Дек 26, 2015 22:49    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| Думаю, при такой постановке задачи ответ - нет. Полноценную замену не сделать. Объясните подробно для чего и где вы хотите сделать подмену, может, есть иное решение. | 
			 
		  | 
	 
	
		  | 
	 
	
		Alkov Профи
 
  Вступление в Клуб: 23.09.2010
  | 
		
			
				 Пн Дек 28, 2015 04:28   Re: Подмена дистрибутивной операции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | eugene_smith пишет: | 	 		  
 
Реализация упирается в тот факт, что несмотря на безусловный возврат из секции валидации (вместо return также был опробован exit с тем же результатом), отображается форма основной операции.
 
Есть ли возможность сделать полноценную подмену? | 	  
 
 
А если PLPCALL сделать в клиент скрипте по LastControl is Nothing ?
 
А затем закрыть операцию по PostEvent ? | 
			 
		  | 
	 
	
		  | 
	 
	
		Эмиралька Эксперт
 
  Вступление в Клуб: 09.11.2015
  | 
		
			
				 Пн Дек 28, 2015 08:09   Re: Подмена дистрибутивной операции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | eugene_smith пишет: | 	 		  Добрый день!
 
 
Буду признателен, если кто-то подскажет адекватное решение задачи. Требуется подменить логику дистрибутивной операции. Есть предположение, что возможен следующий вариант реализации:
 
1. Сделать расширение операции
 
2. Из секции валидации расширения plp-вызовом запускать замещающую операцию
 
3. После plp-вызова завершать выполнение операции.
 
 | 	  
 
 
А зачем вообще расширение?
 
Закройте доступ к дистрибутивной операции, да сделайте локальную свою такую же. | 
			 
		  | 
	 
	
		  | 
	 
	
		eugene_smith Участник
 
  Вступление в Клуб: 26.12.2015
  | 
		
			
				 Пн Дек 28, 2015 17:58   Re: Подмена дистрибутивной операции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Эмиралька пишет: | 	 		  
 
А зачем вообще расширение?
 
Закройте доступ к дистрибутивной операции, да сделайте локальную свою такую же. | 	  
 
 
Данная операция вызывается из другой, которую желательно держать в актуальном состоянии. | 
			 
		  | 
	 
	
		  | 
	 
	
		[censored] Гость
 
 
 
  | 
		
			
				 Вт Дек 29, 2015 00:28   Re: Подмена дистрибутивной операции | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | eugene_smith пишет: | 	 		   	  | Эмиралька пишет: | 	 		  
 
А зачем вообще расширение?
 
Закройте доступ к дистрибутивной операции, да сделайте локальную свою такую же. | 	  
 
 
Данная операция вызывается из другой, которую желательно держать в актуальном состоянии. | 	  
 
ключевой вопрос - каким образом вызывается | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |