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

Обновление представления после работы операции

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


Вступление в Клуб: 06.05.2015
СообщениеСр Май 06, 2015 08:18   Обновление представления после работы операции Ответить с цитатой
Полезность: Нет оценки
Имеется представление PL/Plus, которое открывается ~30 мин из-за того, что очень долго идет подсчет значений. Если из этого представления запускать операцию, то она отрабатывает (видно по отладке), и все виснет. Есть подозрение, что начинает обновляться представление, но в свойствах операции НЕ стоит галочка "Обновлять список экземпляров после выполнения операции". В нижней панели навигатора в это время написано "Обновление экземпляра". Как избежать зависания и запретить обновлять экземпляр после отработки операции? (Операция не меняет данные, которые отражены в представлении)
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Май 06, 2015 08:40   Re: Обновление представления после работы операции Ответить с цитатой
Полезность: Нет оценки
Ngswolf пишет:
в свойствах операции НЕ стоит галочка "Обновлять список экземпляров после выполнения операции".


Может она стоит на расширении этой операции ?
Ngswolf
Участник со стажем


Вступление в Клуб: 06.05.2015
СообщениеСр Май 06, 2015 08:55    Ответить с цитатой
Полезность: Нет оценки
Нет, у операции нет расширения. Если запускать ее из полного списка, то ничего не обновляется, а если из этого представления PL/Plus, то идет "Обновление экземпляра"
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеСр Май 06, 2015 09:19    Ответить с цитатой
Полезность: Нет оценки
Ngswolf пишет:
Нет, у операции нет расширения. Если запускать ее из полного списка, то ничего не обновляется, а если из этого представления PL/Plus, то идет "Обновление экземпляра"


Значит представление смотрите. Что там у вас? Может какая сортировка или группировка стоит? Поиграйтесь с галочками типа "статический экземпляр", "не использовать сортировку", "не проверять доступ"
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Май 06, 2015 09:29    Ответить с цитатой
Полезность: Нет оценки
Ngswolf пишет:
Нет, у операции нет расширения.

А у представления тоже нет расширения ?

А операции - фильтра ? (в фильтре может выполняться какой то код над КАЖДЫМ экземпляром, селектированном представлением )
Ngswolf
Участник со стажем


Вступление в Клуб: 06.05.2015
СообщениеСр Май 06, 2015 09:50    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
А операции - фильтра ? (в фильтре может выполняться какой то код над КАЖДЫМ экземпляром, селектированном представлением )

У представления есть фильтр, в котором выполняется код над каждым экземпляром
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Май 06, 2015 11:27    Ответить с цитатой
Полезность: Нет оценки
Ngswolf пишет:
У представления есть фильтр,

код фильтра в студию, что ли ..

p.s. ЦФТ в профиле - это что , шутка Very Happy Arrow Question
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеСр Май 06, 2015 11:32    Ответить с цитатой
Полезность: Нет оценки
Вот такие они суровые ЦФТшники Laughing
Ngswolf
Участник со стажем


Вступление в Клуб: 06.05.2015
СообщениеСр Май 06, 2015 11:42    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
код фильтра в студию, что ли ..


Там 2 функции, которые зовутся из представления (в локальных):
[code]pragma include([DEBUG_TRIGGER]::[MACRO_LIB]);

creddebt ref [R2_VID_DEBT];
depndebt ref [R2_VID_DEBT];

-- Получение задолженности Р2
function DebtForCard
(p_deposit ref [R2_DEPOSIT])
return [SUMMA]
is
debt ref [R2_VID_DEBT] := ::[R2_VID_DEBT]([CODE] = 'OTP_CR_DEBT4TM');
debts [SUMMA];
begin
&debug('DebtForCard : begin',0)
&debug('DebtForCard : p_deposit ='|| p_deposit,0)
if creddebt is null then
creddebt := ::[FP_TUNE].[LIB].get_ref_value('DEBT_OWN_CRED', null, false);
depndebt := ::[FP_TUNE].[LIB].get_ref_value('DEBT_OWN_DEPN', null, false);
end if;
&debug('DebtForCard : расчет самой задолженности',0)
debts := nvl(::[R2_IP_CARD_INT].[PRX_R2_DEPOSIT].GetSumDebtForView(p_deposit%id, debt, sysdate),0)
+nvl(::[R2_IP_CARD_INT].[PRX_R2_DEPOSIT].GetSumDebtForView(p_deposit%id, creddebt, sysdate),0)
+nvl(::[R2_IP_CARD_INT].[PRX_R2_DEPOSIT].GetSumDebtForView(p_deposit%id, depndebt, sysdate),0);
&debug('DebtForCard : debts='||debts,0)
return debts;
end;


procedure GetSumForCard
(p_deposit ref [R2_DEPOSIT]
,p_pn integer
,p_sum_dog in out [SUMMA]
,p_sum_debt in out [SUMMA])
is
sum_dt [SUMMA];
locks [SUMMA];
r2_sum_dog [SUMMA];
r2_sum_debt [SUMMA];
tr_sum_dog [SUMMA];
tr_sum_debt [SUMMA];
begin
&debug('GetSumForCard : begin',0)
&debug('GetSumForCard : p_deposit ='||p_deposit,0)
begin
select d(d.[SUMMA])
in ::[R2_CRED_DEBT]
where d.[PRODUCT] = p_deposit%id and d.[PN] = p_pn and d.[VID_DEBT] = ::[R2_VID_DEBT]([CODE] = 'SUM_DOG')
into r2_sum_dog;
exception when no_data_found then
r2_sum_dog := 0;
end;
&debug('GetSumForCard : r2_sum_dog ='||r2_sum_dog,0)
/*begin
select d(d.[SUMMA])
in ::[R2_CRED_DEBT]
where d.[PRODUCT] = p_deposit%id and d.[PN] = p_pn and d.[VID_DEBT] = ::[R2_VID_DEBT]([code] = 'ЛИМИТ')
into p_sum_cred;
exception when no_data_found then
p_sum_cred := 0;
end;*/
sum_dt := nvl(::[R2_IP_CHANGE_LA].[L].GetUnRespSumDt(p_deposit%id,null,p_pn),0);
&debug('GetSumForCard : sum_dt ='||sum_dt,0)
locks := nvl(::[R2_IP_CARD_INT].[PRX_R2_DEPOSIT].GetSumLock(p_deposit%id, sysdate),0);
&debug('GetSumForCard : locks ='||locks,0)
r2_sum_dog := greatest((r2_sum_dog - (locks + sum_dt)),0);
&debug('GetSumForCard : r2_sum_dog ='||r2_sum_dog,0)
r2_sum_debt := DebtForCard(p_deposit%id);
&debug('GetSumForCard : r2_sum_debt ='||r2_sum_debt,0)
begin
select v(v.[OWN_ASSET], v.[LIAB])
in (::[OTP_R2_TRANSM]:v), (::[R2_ACC]:ac)
where
ac.[NUM_ACC] = v.[ACNT]
and ac.[PRODUCT]= p_deposit%id
and ac.[PN]=p_pn
into tr_sum_dog, tr_sum_debt;
exception when no_data_found then
tr_sum_dog := 0;
tr_sum_debt := 0;
end;
&debug('GetSumForCard : tr_sum_dog ='||tr_sum_dog,0)
&debug('GetSumForCard : tr_sum_debt ='||tr_sum_debt,0)
p_sum_dog := r2_sum_dog - tr_sum_dog;
p_sum_debt := r2_sum_debt - tr_sum_debt;
&debug('p_sum_dog ='|| p_sum_dog,0)
&debug('p_sum_debt ='|| p_sum_debt,0)
/*if (p_sum_dog -(locks + sum_dt)) < 0 then
p_sum_cred := p_sum_cred - abs(p_sum_dog - (locks + sum_dt));
end if;*/
end;
[/code]
В этом то месте все и висит
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Май 06, 2015 12:43    Ответить с цитатой
Полезность: Нет оценки
GetSumDebt... "тяжелые" операции.
Я бы сделал операцию - отчот , в EXCEL например
Ngswolf
Участник со стажем


Вступление в Клуб: 06.05.2015
СообщениеСр Май 06, 2015 13:44    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
GetSumDebt... "тяжелые" операции.
Я бы сделал операцию - отчот , в EXCEL например

Понятно, что тяжелые. Проблема в том, что первый раз представление открывается ~30 мин, а после отработки операции еще висит не известно сколько (>6 ч).
Ngswolf
Участник со стажем


Вступление в Клуб: 06.05.2015
СообщениеСр Май 06, 2015 14:44    Ответить с цитатой
Полезность: Нет оценки
Решила проблему добавлением put_line_buf в конце операции, представление перестало обновляться

Последний раз редактировалось: Ngswolf (Чт Май 07, 2015 06:04), всего редактировалось 1 раз
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Май 06, 2015 14:50    Ответить с цитатой
Полезность: Нет оценки
Ngswolf пишет:
Решила проблему добавление put_line_buf в конце операции, представление перестало обновляться

Запускалось с включенной отладкой что-ли, а put_line_buf вЫчитал pipe ?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Май 07, 2015 04:31    Ответить с цитатой
Полезность: Нет оценки
Ngswolf пишет:
Решила проблему добавление put_line_buf в конце операции, представление перестало обновляться

Эээ, а каким боком, и что навело на эту команду ?
Ngswolf
Участник со стажем


Вступление в Клуб: 06.05.2015
СообщениеЧт Май 07, 2015 06:03    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Запускалось с включенной отладкой что-ли, а put_line_buf вЫчитал pipe ?

vtar пишет:
Эээ, а каким боком, и что навело на эту команду ?

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

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