открытие счёта в хуке
На страницу Пред. 1, 2, 3
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пн Сен 10, 2012 11:41   |
|
Полезность: Нет оценки
|
yaffil пишет: | Код: |
if nvl(th.[DO_PROC_FLAG], true) then
if th.[IS_IN] then
-- Обработка транспортного документа
&sp(DO_PROCESS_IN)
|
Во нарыл, там есть реквизит DO_PROC_FLAG, может к нему прицепиться. Я правильно понимаю, что если документ обработался, то этот флаг затирается с удалением транспортного документа? А то просто нет никакой переинициализации данного реквизита. | Я думаю стоит проанализировать код. У меня на схеме такого реквизита нет. Да и версия у меня старая. _________________ всегда есть как минимум 2 выхода |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пн Сен 10, 2012 11:56   |
|
Полезность: Нет оценки
|
Так и есть, данный реквизит затирается вместе с экземпляром после обработки, но, думаю, не лучший способ, т.к. данная операция опять таки вызывается из нескольких мест. Опять таки нужна какая то аналитика.
Возможно ли, как то, определить внутри хука BC_PROC_CHECK, что он был вызван операцией PROCESS из ТБП BCD_PAYMENT ? |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пн Сен 10, 2012 12:27   |
|
Полезность: Нет оценки
|
yaffil пишет: | Так и есть, данный реквизит затирается вместе с экземпляром после обработки, но, думаю, не лучший способ, т.к. данная операция опять таки вызывается из нескольких мест. Опять таки нужна какая то аналитика.
Возможно ли, как то, определить внутри хука BC_PROC_CHECK, что он был вызван операцией PROCESS из ТБП BCD_PAYMENT ? |
наверное каким-то образом и можно определить по стеку. Но как я не подскажу - не знаю. Возможно подскажут более знающие коллеги.
На моем уровне я бы, как писал выше, объявил пакетную переменную и из Хука ее включал _________________ всегда есть как минимум 2 выхода |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пн Сен 10, 2012 12:46   |
|
Полезность: Нет оценки
|
Алексей, я тоже хотел подобный вариант использовать, но не понимаю каким образом мы определим что хук вызвало именно создание документа, а не другая операция?
Ведь этот хук вызывают очень много операций в ДБО: Транспортные документы, а нас интересует только одна ДБО: платёжные поручения.
Ибо только при запуске этой операции нам надо открывать счёт и пополнять его. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пн Сен 10, 2012 14:03   |
|
Полезность: Нет оценки
|
yaffil пишет: | Алексей, я тоже хотел подобный вариант использовать, но не понимаю каким образом мы определим что хук вызвало именно создание документа, а не другая операция?
Ведь этот хук вызывают очень много операций в ДБО: Транспортные документы, а нас интересует только одна ДБО: платёжные поручения.
Ибо только при запуске этой операции нам надо открывать счёт и пополнять его. |
Все гениальное просто. При вызове BC_PROC_CHECK первым параметром передается This. Проанализируй у операции BC_PROC_CHECK параметр P_BC_DOC_REF на принадлежность к классу, т.к. это ссылка на верхний уровень, если это BCD_PAYMENT то делай свои действия, иначе ни чего не делаешь _________________ всегда есть как минимум 2 выхода |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пн Сен 10, 2012 14:44   |
|
Полезность: Нет оценки
|
Ооо, спасибо, собственно ничего, наверное больше и не надо будет проверять, ну кроме наличия счёта.  |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Вт Сен 11, 2012 10:39   |
|
Полезность: Нет оценки
|
Alexsey пишет: |
Все гениальное просто. При вызове BC_PROC_CHECK первым параметром передается This. Проанализируй у операции BC_PROC_CHECK параметр P_BC_DOC_REF на принадлежность к классу, т.к. это ссылка на верхний уровень, если это BCD_PAYMENT то делай свои действия, иначе ни чего не делаешь |
А как выйти на имя ТБП ведь this%class выдаёт class=HOOK_BANK, а мне надо получить BCD_PAYMENT ? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Вт Сен 11, 2012 10:48   |
|
Полезность: Нет оценки
|
yaffil пишет: | Alexsey пишет: |
Все гениальное просто. При вызове BC_PROC_CHECK первым параметром передается This. Проанализируй у операции BC_PROC_CHECK параметр P_BC_DOC_REF на принадлежность к классу, т.к. это ссылка на верхний уровень, если это BCD_PAYMENT то делай свои действия, иначе ни чего не делаешь |
А как выйти на имя ТБП ведь this%class выдаёт class=HOOK_BANK, а мне надо получить BCD_PAYMENT ? |
Очевидно, модификатор %class надо применить к параметру P_BC_DOC_REF |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Вт Сен 11, 2012 16:17   |
|
Полезность: Нет оценки
|
Не могу понять почему он дёргает его много раз, вот лог первый прогон всё как надо, но во второй он пихает тоже самое и отбраковывает, где поковырять ещё?
Код: |
17:07:49 [HOOK_BANK]::[BC_PROC_CHECK]счет плательщика=40817810810110005555
[HOOK_BANK]::[BC_PROC_CHECK]остаток по карте=55.55
[HOOK_BANK]::[BC_PROC_CHECK]сумма документа=1
[HOOK_BANK]::[BC_PROC_CHECK]счёт карточный=1
[HOOK_BANK]::[BC_PROC_CHECK]открываем счёт
17:07:50 [HOOK_BANK]::[BC_PROC_CHECK]открыт счёт=506946245
17:07:50 [HOOK_BANK]::[BC_PROC_CHECK]P_BC_DOC_REF=BCD_PAYMENT
17:07:53 [HOOK_BANK]::[BC_PROC_CHECK]счет плательщика=40817810810110005555
[HOOK_BANK]::[BC_PROC_CHECK]остаток по карте=55.55
[HOOK_BANK]::[BC_PROC_CHECK]сумма документа=1
[HOOK_BANK]::[BC_PROC_CHECK]счёт карточный=1
[HOOK_BANK]::[BC_PROC_CHECK]открываем счёт
|
Код: |
Возвращен
Номер счета '30233810001918105555' уже занят. Введите другой номер счета!
|
|
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Ср Сен 12, 2012 08:57   |
|
Полезность: Нет оценки
|
Ещё одна проблема, после того как вылетел, счёт не открывается ЦФТ его где то зарезервировали, в фин.счетах и планах счётов по лицевому счёту данного номера нет, но при попытке завести счёт руками через фин.счета -> открыть счёт выпадает в ошибку (отрабатывает функция hash_value_3):
Может кто знает как убрать блокировку?
Код: |
ORA-20300: APP-PL_USV.USV_NAME_S: Номер счета '30233810001918105555' уже занят. Введите другой номер счета!
ORA-06512: на "IBS.MESSAGE", line 58
ORA-06512: на "IBS.Z$PL_USV_USV_NAME_S", line 436
function hash_value_3(p_name varchar2) return pls_integer is
begin
return -utils.hash_value(p_name,1073741824,2147483647-1073741824+1);
end;
|
|
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пт Сен 14, 2012 09:33   |
|
Полезность: Нет оценки
|
Усё сделал, всем спасибо. Осталась только проблема с невозможностью открытия такого же счёта после его удаления. Проблема передана на саппорт ЦФТ. Хотя кто знает какой кэш почистить - буду благодарен за ответ  |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пт Сен 14, 2012 13:41   |
|
Полезность: Нет оценки
|
Попробуй "Система -> Выполнение заданий по расписанию-> обновить список блокировок пользователей". Возможно поможет _________________ всегда есть как минимум 2 выхода |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пт Сен 14, 2012 15:17   |
|
Полезность: Нет оценки
|
Мистика какая то, сейчас не ругается на тот же счёт, хотя у меня даже скрины сохранены, которые отправлял в ЦФТ.
И ситуацию не удаётся повторить.  |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|