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

HOOK_BANK
На страницу Пред.  1, 2, 3
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
Эмиралька
Профи
Неподтвержденный


Вступление в Клуб: 09.11.2015
СообщениеВт Июн 05, 2018 07:15    Ответить с цитатой
Полезность: 3
raxat_tl пишет:
vtar пишет:
FO_EXECUTE ?
тогда скопируйте (перетащите мышкой) из ТБП Расширение.Дистрибутив в ТБП Расширения.Банк.

У Вас получится хук банка, и в теле пишите
begin
Ваш код, для начала можно тестовый debug_pipe('зашли в хук ',0);
end;

Точно так и сделали, но дело в том что дебаг не отрабатывает, т.е. в ТБП Расширения.Банк операция FO_EXECUTE не вызвался


Давайте по шагам.
Открываете операцию HOOK.FO_EXECUTE с помощью АРМ Администратор словаря данных. Если в HOOK_BANK тоже есть такая операция, предварительно удалите её.
Заходите в закладку "Пакет", подзакладка "Тело". Ищете функцию FO_EXECUTE_EXECUTE.
Запомните текст. Закройте окно.
Теперь переключитесь в основное окно АРМ и перетащите мышкой операцию FO_EXECUTE из типа "Расширения. Дистрибутив" в "Расширения. Банк". Согласитесь со всеми вопросами. Дождитесь компиляции. Закройте все окна с операциями.
Снова откройте операцию HOOK.FO_EXECUTE с помощью АРМ Администратор словаря данных. Снова зайдите в закладку "Пакет", подзакладка "Тело". Сравните текст функции FO_EXECUTE_EXECUTE с запомненным ранее.

Обратите внимание на появившийся текст:
Код:
      if plp$class$ != 'HOOK' then
         if plp$class$ = 'HOOK_BANK' then
            return Z$HOOK_BANK_FO_EXECUTE.FO_EXECUTE_EXECUTE(plp$THIS,nvl(plp$CLASS,plp$class$),P_FOLDER,P_DATE,P_ADDS);
         end if;
      end if;

Здесь и осуществляется перенаправление функционала.
Если перенаправление функционала у вас не происходит, попробуйте вставить в ПАКЕТ Z$HOOK_FO_EXECUTE вывод какой-нибудь отладки. Особо обратите внимание на параметры this и plp$class и переменную plp$class$.
raxat_tl
Участник со стажем
Неподтвержденный


Вступление в Клуб: 04.03.2016
СообщениеВт Июн 05, 2018 08:11    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
raxat_tl пишет:

Точно так и сделали, но дело в том что дебаг не отрабатывает, т.е. в ТБП Расширения.Банк операция FO_EXECUTE не вызвался


Проверил только что. Скопировал хук в хук банка.
добавил в теле хука банка
Код:

begin
 stdio.put_line_buf('test!');
 debug_pipe('test!');
end;


Скомпилировал.

при исполнении ФР получаю тестовое сообщение 'test!'в всплывающем окне и в Мониторе .Все работает.

Но у меня почему то не отрабатывается на операции FO_EXECUTE
raxat_tl
Участник со стажем
Неподтвержденный


Вступление в Клуб: 04.03.2016
СообщениеВт Июн 05, 2018 08:34    Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
raxat_tl пишет:
vtar пишет:
FO_EXECUTE ?
тогда скопируйте (перетащите мышкой) из ТБП Расширение.Дистрибутив в ТБП Расширения.Банк.

У Вас получится хук банка, и в теле пишите
begin
Ваш код, для начала можно тестовый debug_pipe('зашли в хук ',0);
end;

Точно так и сделали, но дело в том что дебаг не отрабатывает, т.е. в ТБП Расширения.Банк операция FO_EXECUTE не вызвался


Давайте по шагам.
Открываете операцию HOOK.FO_EXECUTE с помощью АРМ Администратор словаря данных. Если в HOOK_BANK тоже есть такая операция, предварительно удалите её.
Заходите в закладку "Пакет", подзакладка "Тело". Ищете функцию FO_EXECUTE_EXECUTE.
Запомните текст. Закройте окно.
Теперь переключитесь в основное окно АРМ и перетащите мышкой операцию FO_EXECUTE из типа "Расширения. Дистрибутив" в "Расширения. Банк". Согласитесь со всеми вопросами. Дождитесь компиляции. Закройте все окна с операциями.
Снова откройте операцию HOOK.FO_EXECUTE с помощью АРМ Администратор словаря данных. Снова зайдите в закладку "Пакет", подзакладка "Тело". Сравните текст функции FO_EXECUTE_EXECUTE с запомненным ранее.

Обратите внимание на появившийся текст:
Код:
      if plp$class$ != 'HOOK' then
         if plp$class$ = 'HOOK_BANK' then
            return Z$HOOK_BANK_FO_EXECUTE.FO_EXECUTE_EXECUTE(plp$THIS,nvl(plp$CLASS,plp$class$),P_FOLDER,P_DATE,P_ADDS);
         end if;
      end if;

Здесь и осуществляется перенаправление функционала.
Если перенаправление функционала у вас не происходит, попробуйте вставить в ПАКЕТ Z$HOOK_FO_EXECUTE вывод какой-нибудь отладки. Особо обратите внимание на параметры this и plp$class и переменную plp$class$.

Всем огромное спасибо!!!Все отработало
vtar
Эксперт
Неподтвержденный


Вступление в Клуб: 20.03.2009
СообщениеВт Июн 05, 2018 09:06   ? Ответить с цитатой
Полезность: Нет оценки
raxat_tl пишет:
.
Всем огромное спасибо!!!Все отработало


таки в чом была проблема ?
_________________
Нельзя всем дать всё: всех много, а всего мало
Эмиралька
Профи
Неподтвержденный


Вступление в Клуб: 09.11.2015
СообщениеВт Июн 05, 2018 10:54    Ответить с цитатой
Полезность: 1
raxat_tl пишет:
Всем огромное спасибо!!!Все отработало

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

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