powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Проблема в работе с глобальными переменными х01-х10
4 сообщений из 4, страница 1 из 1
Проблема в работе с глобальными переменными х01-х10
    #36779582
Arino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: со страницы 2 аяксом переслать на страницу 4 много переменных, где формируется отчет на базе этих переменных, который забирается как результат отработки аякса и отображается на странице 2.

Как это должно по идее работать:
1. После нажатия на кнопку "Сгенерировать отчет" запускается вот этот js:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
function AjaxReportRefresh() {
    var page = (isAdvanced ==  0 ) ? "3" : "4";
    var arg_name = (isAdvanced ==  0 ) ? "P3_HDN_SEARCH" : "P4_HDN_SEARCH";
    var arg_val = $v('P2_TXT_SEARCH');
    var search_param = {
        p_flow_id:      $('#pFlowId').attr("value"),
        p_flow_step_id: page,
        p_instance:     $('#pInstance').attr("value"),
        p_request:      "",
        p_arg_name :    arg_name,
        p_arg_value :   arg_val
    };

    if (isAdvanced ==  1 ) {
        search_param.x01 = $('input:radio[name=radio_sektor]:checked').val(); //сектор
        search_param.x02 = $('input:radio[name=radio_deleted]:checked').val(); //состояние
        if ($('#chk_tech').is(':checked')) {
            search_param.x03 = ''; //технология
            $('#technology_checkboxes :checked').each(function() {
                (search_param.x03 != '') ? search_param.x03 += ', ' + ($(this).val()) : search_param.x03 += ($(this).val());
            });

        }

        if ($('input#chk_tp').is(':checked')) {
            var tp_conf = {};
            tp_conf.ap = {
                operator:   $('select#select_tp_ap').val(),
                value:      $('input#txt_tp_ap').val()
            };

            tp_conf.rp = {
                operator:   $('select#select_tp_rp').val(),
                value:      $('input#txt_tp_rp').val()
            };

            tp_conf.duration = {
                step:   $('select#select_tp_duration').val(),
                value:      $('input#txt_tp_duration').val()
            };

            tp_conf.unlim = {
                world:  $('input:radio[name=radio_unlim_w]:checked').val(),
                tasix:  $('input:radio[name=radio_unlim_t]:checked').val(),
                sarkor: $('input:radio[name=radio_unlim_s]:checked').val()
            };

            tp_conf.onlyThese = $('input#as-values-tp_ids_inc').val();
            tp_conf.noneOfThese = $('input#as-values-tp_ids_exc').val();

            search_param.x04 = JSON.stringify(tp_conf);
        }

        if ($('#chk_abongrp').is(':checked')) {
            search_param.x05 = ''; //абонгруппа
            $('#abongroup_checkboxes :checked').each(function() {
                (search_param.x05 != '') ? search_param.x05 += ', ' + ($(this).val()) : search_param.x05 += ($(this).val());
            });

        }

        if ($('#chk_else').is(':checked')) {
            var else_conf = {};

            else_conf.c_ids ={
                from: $('input#txt_c_id_from').val(),
                to:   $('input#txt_c_id_till').val()
            };

            else_conf.saldo ={
                operator: $('select#select_saldo').val(),
                value:    $('input#txt_saldo').val()
            };

            else_conf.opers = $('input#as-values-oper_ids').val();
            else_conf.ats = $('input#as-values-ats_ids').val();
            else_conf.ip = '';
            $('.ip_octet').each(function() {
                else_conf.ip += ($(this).val()) + '.';
            });
            else_conf.ip = else_conf.ip.substring( 0 ,else_conf.ip.length- 1 );
            else_conf.discount = {
                operator: $('select#select_discount').val(),
                value:    $('input#txt_discount').val()
            };

            search_param.x06 = else_conf;

        }
    }
//    alert(JSON.stringify(search_param));
    $.post("wwv_flow.show", search_param, function(data) {
        var startTag = '<ajaxReport>';
        var endTag = '</ajaxReport>';
        var start = data.indexOf(startTag);

        if (start >  0 ) {
            data = data.substring(start + startTag.length);
            var end = data.indexOf(endTag);
            data = data.substring( 0 , end);
        }
        $('#AjaxReport').html(data);
        $('#pFlowStepId').attr("value", page);
        $('#closeReport').click(function() {
            $('#AjaxReport').html('');
        });
    });
}

как качестве аякс-библиотеки используется jQuery.

2. В результате работы аякс устанавливается параметр P4_HDN_SEARCH на странице 4 и отрабатывает регион отчета. Для упрощения и проверки данных запускаю простой PL/SQL регион который печатает результат работы следующей функции (опять-таки все упрощено):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function advanced_search(search_in in varchar2) return varchar2 as
    l_sector varchar2( 40 );
    l_ret varchar2( 32000 );
  begin
    execute immediate 'alter session set NLS_SORT=BINARY_CI';
    execute immediate 'alter session set NLS_COMP=LINGUISTIC';
    l_sector := wwv_flow.g_x01;
    l_ret := 'search_in:' || search_in || ', sector: ' || l_sector;
    return l_ret;
  end advanced_search;

но не работает, параметр search_in (значение P4_HDN_SEARCH) отображается нормально. а wwv_flow.g_x01 - не видно. Firebug говорит что пост выполнился нормально и данные были переданы на сервер:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Параметры application/x-www-form-urlencoded
p_arg_name	P4_HDN_SEARCH
p_arg_value	
p_flow_id	 102 
p_flow_step_id	 4 
p_instance	 1902434046761268 
p_request	
x01	- 1 
x02	- 1 
Исходный код
p_flow_id= 102 &p_flow_step_id= 4 &p_instance= 1902434046761268 &p_request=&p_arg_name=P4_HDN_SEARCH&p_arg_value=&x01=- 1 &x02=- 1 

Глобальные переменные уже использовались в OnDemand процессе и работают нормально, но вот тут возникла проблема. Уже перерыл весь инет, специализированные блоги - не могу ничего найти.

Есть идеи в чем проблема?

P.S. Может можно решить задачу другим путем?
...
Рейтинг: 0 / 0
Проблема в работе с глобальными переменными х01-х10
    #36780151
kvad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arino,

Если значение request-а не принципиально, то можно попробовать вызвать wwv_flow.show
с параметром p_request="INTERNAL_APPLICATION_PROCESS=" (знак "=" в конце нужен!).

2-й вариант - вызывать не wwv_flow.show, а wwv_flow.accept
При этом становятся доступны массивы g_f01 .. g_f50, их можно принять и обработать в Procesing Page, а затем перейти бранчем к странице с отчетом.
...
Рейтинг: 0 / 0
Проблема в работе с глобальными переменными х01-х10
    #36782116
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, может быть, не так понял задачу, но в чём проблема сохранить кучу переменных через AJAX, потом вызвать и отпарсить соответствующую страницу, например, через htmldb_Get.get ?
...
Рейтинг: 0 / 0
Проблема в работе с глобальными переменными х01-х10
    #36806904
Arino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer, kvad спасибо, уже решил другим методом.

Кстати кому интересно вот правильный формат запроса для работы с глобальными переменными:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$.ajax({
            mode: "abort",
            dataType: 'html',
            url: "wwv_flow.show",
            data: {
                x01: some_value,
                x02: some_value,
                p_flow_id: $("#pFlowId").val(),
                p_flow_step_id: $("#pFlowStepId").val(),
                p_instance: $("#pInstance").val(),
                p_request: 'APPLICATION_PROCESS=SOME_PROCESS
            },
            success: function(data) {
                //do smth here
            }
        });

или с библиотекой jApex:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                  var options = {
                        appProcess: 'SOME_PROCESS',
                        dataType: 'html',
                        x01 : some_value,
                        x02 : some_value,
                        success:function(data) {
                            //do smth here
                        }
                    };
                    $.jApex.ajax(options);    

и сдается мне это работает только с процессами...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Проблема в работе с глобальными переменными х01-х10
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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