| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			     Подскажите, как автоматически передать значения фильтров в отчет из формы.  
		
		
		
		
		
		
		
	Ситуация следующая: Я устанавливаю значения фильтров в форме для одной таблицы и необходимо чтобы после выбора фильтров их значения передавались для фильтрации данных в другой таблице, из которой потом создается отчет. Вручную каждый раз устанавливать фильтры для отчета очень не удобно.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Один из способов: 
		
		
		
		
		
		
		
	rec.SETFILTER(...); rec.SETRANGE(...); REPORT.RUN(номер_отчета, TRUE, TRUE,rec); запустит отчет с установленными в rec фильтрами. Да, естессно, что отчет должен быть основан на этой таблице  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А если несколько таблиц? 
		
		
		
		
		
		
		
	Например Код: Lication Item  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну вообще да, наверное проще всего написать в отчете функции, принимающий и накладывающие фильтры, объявить переменную типа репорт, вызвать функции и потом его запустить.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно в репорте определить датаайтемы на нужных таблицах. Обрабатывать их в отчете (обрабатывать записи этих айтемов) совсем не обязательно. Они будут только для принятия фильтров. То есть в триггере OnPreDataItem нужно написать CurrReport.BREAK. Наложить на эти айтемы фильтры извне можно командой Report.SETTABLEVIEW(Rec). Айтемов может быть несколько.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
------SetParams(_String: Text[1024])----- Filter := _String; ------------------------------------------------ А потом из вызывающей формы: ReportVar.SetParams(Rec.GETVIEW); А потом где там надо в отчёте: SETVIEW(Filter); Извращение, конечно. Удобно: мало кода, репорт и форма будут иметь одинаковые ключи и фильтры. Плюс строку со вьюшкой если надо можно парсить вдоль и поперёк приятственно, или передавать в отчёт какой-нибудь самодельный фильтр. Неудобно: если вьюшка будет больше килобайта - вылетит. 
				__________________ 
		
		
		
		
	--- GoldEd 2.50+/w32*Origin: Луц по 20 чаттлов! Остановите рост цен на бензин. (2:5099/15)  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно в тот же SetParam передать просто рек на котором лежат фильтры, а потом на OnPreDataItem написать COPYFILTER
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Но COPYFILTERS вроде бы не копирует ключ, может случиться фильтрация не по тому ключу. 
				__________________ 
		
		
		
		
	--- GoldEd 2.50+/w32*Origin: Луц по 20 чаттлов! Остановите рост цен на бензин. (2:5099/15)  | 
| 
	
 |