| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		InNesKA Участник со стажем
 
  Вступление в Клуб: 05.06.2008
  | 
		
			
				 Вт Июл 08, 2008 04:29   Отбор нужного в представление. | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Задача такая: необходимо создать представление по документам банк-фактуры (настроено в операции фильтр), где показываются документы за период (операция фильтр). 
 
   Подскажите как сделать так, чтобы:
 
      Если за данный период по счету несколько документов,  то показывать только первый, но если были по счету документы раньше даты начала периода, то ничего не показывать. 
 
 
P.S. Заранее спасибо.   | 
			 
		  | 
	
	
		  | 
	
	
		dnk_dz Эксперт
 
  Вступление в Клуб: 19.09.2007
  | 
		
			
				 Вт Июл 08, 2008 05:35    | 
				     | 
			 
			
				Полезность: 1 
  | 
			 
			
				На вскидку примерно так:
 
1. Выбрать минимальный ID документа по счету за период. С группировкой по счету.
 
2. Выбрать все документы, получившиеся в п.1
 
 
типа:
 
 	  | Код: | 	 		  select a(
 
   a.[DOCUMENT_NUM],
 
   ...
 
)
 
in ::[MAIN_DOCUM] where a in
 
(
 
   select b
 
   (min(b%id))
 
   in ::[MAIN_DOCUM] where b.[DATE_PROV] >= date1  and 
 
   b.[DATE_PROV] <= date2
 
   group by b.[ACC_DT]
 
) | 	 
  | 
			 
		  | 
	
	
		  | 
	
	
		InNesKA Участник со стажем
 
  Вступление в Клуб: 05.06.2008
  | 
		
			
				 Вт Июл 08, 2008 06:07    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | dnk_dz пишет: | 	 		  На вскидку примерно так:
 
1. Выбрать минимальный ID документа по счету за период. С группировкой по счету.
 
2. Выбрать все документы, получившиеся в п.1
 
 
типа:
 
 	  | Код: | 	 		  select a(
 
   a.[DOCUMENT_NUM],
 
   ...
 
)
 
in ::[MAIN_DOCUM] where a in
 
(
 
   select b
 
   (min(b%id))
 
   in ::[MAIN_DOCUM] where b.[DATE_PROV] >= date1  and 
 
   b.[DATE_PROV] <= date2
 
   group by b.[ACC_DT]
 
) | 	 
  | 	  
 
 
Как это вставить в простое представление для просмотра с фильтром?     | 
			 
		  | 
	
	
		  | 
	
	
		dnk_dz Эксперт
 
  Вступление в Клуб: 19.09.2007
  | 
		
			
				 Вт Июл 08, 2008 06:10    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | InNesKA пишет: | 	 		  
 
Как это вставить в простое представление для просмотра с фильтром?     | 	  
 
 
Никак. Только сделать PL+ представление. | 
			 
		  | 
	
	
		  | 
	
	
		r00st Эксперт
 
  Вступление в Клуб: 14.09.2007
  | 
		
			
				 Вт Июл 08, 2008 06:31    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Этот вариант годится, если нужен любой из имеющихся документов в заданном периоде.
 
Если же обязателен первый (по дате проводки или дате документа), то не учитывается возможность вставки прошлой датой. | 
			 
		  | 
	
	
		  | 
	
	
		InNesKA Участник со стажем
 
  Вступление в Клуб: 05.06.2008
  | 
		
			
				 Вт Июл 08, 2008 08:06    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | dnk_dz пишет: | 	 		   	  | InNesKA пишет: | 	 		  
 
Как это вставить в простое представление для просмотра с фильтром?     | 	  
 
 
Никак. Только сделать PL+ представление. | 	  
 
 
Я выборку написала...просто думала может можно это в простом представление использовать. | 
			 
		  | 
	
	
		  | 
	
	
		Alex2019 Профи
 
  Вступление в Клуб: 02.07.2007
  | 
		
			
				 Вт Июл 08, 2008 18:29    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | InNesKA пишет: | 	 		   	  | dnk_dz пишет: | 	 		   	  | InNesKA пишет: | 	 		  
 
Как это вставить в простое представление для просмотра с фильтром?     | 	  
 
 
Никак. Только сделать PL+ представление. | 	  
 
 
Я выборку написала...просто думала может можно это в простом представление использовать. | 	  
 
Можно попробовать в простом представлении в условии написать что-то вроде 
 
 	  | Код: | 	 		  | A1_1.ID in (select B.ID from Z#MAIN_DOCUM B where B.C_DATE_DOC... | 	  , а селект предварительно написать в теле фильтра, откомпилить и полученный в теле пакета результат вставить в условие   
 
Вот только с датами придется помудрить, возможно через SYS_CONTEXT, по принципу того, как это сделано в "Документы опердня". Впрочем, если есть фильтр, и даты задаются в нем. то задача упрощается | 
			 
		  | 
	
	
		  | 
	
	
		 |