Обновление представления после работы операции 
	   
	     | 
   
 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		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, обновление экземпляра после этого перестало происходить | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |