| 
 
  
	| Обновление представления после работы операции 
 
 |  
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| 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. ЦФТ в профиле - это что , шутка
      |  |  
		|  |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Ср Май 06, 2015 11:32    |   |  
				| Полезность: Нет оценки 
 |  
				| Вот такие они суровые ЦФТшники  |  |  
		|  |  
		| 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, обновление экземпляра после этого перестало происходить
 |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |