powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Глюк апекса при работе с item'ами через PL/SQL или это фитча такая?
4 сообщений из 4, страница 1 из 1
Глюк апекса при работе с item'ами через PL/SQL или это фитча такая?
    #37079041
Добрый все день!
Хочу поделиться тем, что недавно обнаружил. В общем дело было так:
Есть страница, на ней есть OnLoad BeforeHeader процесс, который, если не указан признак расчета заполняет все item'ы (с маской по названию) значением "Н/Д", и, если флаг установлен (=1), то производит расчет и заполняет item'ы полученными значениями. Вот примерный текст процесса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
begin
  if nvl(:P6_CALC_FLAG,  0 ) =  0  then    
    for q in (select item_name 
                from APEX_APPLICATION_PAGE_ITEMS t 
               where t.application_id = :APP_ID
                 and t.page_id =  6 
                 and t.item_name like '%_VAL_%')
    loop
      apex_util.set_session_state(q.item_name, 'н/д'); 
    end loop;
  else 
    /*начало периода*/
    sbc_fin_reports_new.calc_agr_fin_act(:HOLD_ID,
                                         to_date(:P6_BEGIN_DATE, 'DD.MM.YYYY'));
    :P6_B_VAL_CASH       := to_char(sbc_fin_reports_new.g_fin_act_cash, '999G999G999G999G990D00');
    /*Аналогично идет присвоение значений еще нескольким item'ам*/
  end if; 
end;
Так вот, если делать как указано выше, то (!!!!!) даже при флаге = 0 по какой-то причине :P6_B_VAL_CASH сбрасывается в null. Почему это происходит? Ведь по правилам он туда даже не должен суваться!! :(

Возился-возился пришлось заменить строку
Код: plaintext
:P6_B_VAL_CASH       := to_char(sbc_fin_reports_new.g_fin_act_cash, '999G999G999G999G990D00');
на
Код: plaintext
1.
2.
l_p6_b_val_cash := to_char(sbc_fin_reports_new.g_fin_act_cash, '999G999G999G999G990D00');
apex_util.set_session_state('P6_B_VAL_CASH', l_p6_b_val_cash );

Может кому полезно будет.
Если у кого есть идеи почему апекс так обрабатывает случай (1) отпишитесь пожалуйста.
...
Рейтинг: 0 / 0
Глюк апекса при работе с item'ами через PL/SQL или это фитча такая?
    #37079400
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гришков Максим
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
begin
  if nvl(:P6_CALC_FLAG,  0 ) =  0  then    
...
  else 
...
  end if; 
end;
Так вот, если делать как указано выше, то (!!!!!) даже при флаге = 0 по какой-то причине :P6_B_VAL_CASH сбрасывается в null.

И как было определено, что "флаг = 0" на момент выполнения этого процесса? На глаз? :)
...
Рейтинг: 0 / 0
Глюк апекса при работе с item'ами через PL/SQL или это фитча такая?
    #37079589
suPPLer,

В том числе и "на глаз".
На самом деле, я тоже подумал, что он не 0 (возможно null - для этого я и добавил nvl). Но (!!!!) если он не 0 и не null, то должно выполниться условие else. Делаю следующее:
Код: plaintext
1.
2.
3.
4.
5.
  if nvl(:P6_CALC_FLAG,  0 ) =  0  then    
...
  else 
    :P6_B_VAL_CASH := 'qqqqqq';
  end if;
По идее значение item'а P6_B_VAL_CASH должно стать равным "qqqqqq" - нет (!!!!). Он все равно сбрасывается в null.
Есть идея, что, когда APEX динамически выполняет этот зарос, то в переменную биндится либо значение, либо null. Другого объяснения я не нашел.
...
Рейтинг: 0 / 0
Глюк апекса при работе с item'ами через PL/SQL или это фитча такая?
    #37080358
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гришков Максим,

есть предложение включить отладку (Debug) и посмотреть, когда выполняется процесс, когда заполняются значениями переменные; кроме того, есть предложение заглянуть в Source и Default у элемента P6_B_VAL_CASH.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Глюк апекса при работе с item'ами через PL/SQL или это фитча такая?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]