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

Подмена дистрибутивной операции

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 пишет:
Эмиралька пишет:

А зачем вообще расширение?
Закройте доступ к дистрибутивной операции, да сделайте локальную свою такую же.


Данная операция вызывается из другой, которую желательно держать в актуальном состоянии.

ключевой вопрос - каким образом вызывается
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

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