| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Критерии на отчетах
			 
			
			Уважаемые Гуру!  Помогите, пожалуйста, новичку решить проблему. 
		
		
		
		
		
		
		
	Нужно: определить на форме значения критериев, после чего по кнопке вызвать отчет в соответствии с выбранными значениями, причем, спрятав стандартное окошко отчета, т.е. вывести сразу на экран готовый отчет. Есть отчет, в котором определены два связанных DataSource, установлены поля Range и Sorting. В init методе отчета устанавливаю значения критериев вида: query.dataSourceNo(1).range(1).value(_headerId); Если запустить отдельно отчет, то все работает замечательно - критерии автоматически проставляются в запросе. Но еcли сначала запускается форма, от куда затем передаются значения критериев в отчет, то ничего не получается... ![]() Значения передаются в отчет правильно, но запрос никак не изменяется, в критерии проставляются нули. Что я не так делаю? Может определение Query отчета при открытии его из формы происходит как-то по другому? Помогите, пожалуйста, разобраться  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуйте так: 
		
		
		
		
		
		
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Не получилось
			 Цитата: 
	
		
			Сообщение от Roman777
			
			 
Попробуйте так: 
		
	PHP код: 
	
			
	"Ошибка времени выполнения. : <пустой класс> Объект не инициализирован. Трассировка стека: (C) \Classes\<unknown>\query ..." query() выдает NULL  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			1. Как вы вызываете отчет из формы? 
		
		
		
		
		
		
		
	2. приведите код метода init в отчете  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вы этот  
		
		
		
		
		
		
			
		
		
		
		
	"this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); " код написали до или после super() в init?  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от kashperuk
			
			 
А вы этот  
		
	"this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); " код написали до или после super() в init? У меня супер вызывается после кода (в конце init())  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Roman777
			
			 
1. Как вы вызываете отчет из формы? 
		
	2. приведите код метода init в отчете 2. str param; container parameters; ; param = this.args().parm(); parameters = str2con(param,","); _headerId = conpeek(parameters,1); _wageTypeCode = conpeek(parameters,2); if (_headerId !="") { query.dataSourceNo(1).range(1).value(_headerId); } ... super(); Если запустить отчет напрямую, определяя значения критериев - все подставляет - а так первый не подставляет, во второй ноль пишет...  
		 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Прокопьева
			
			 
А это может так сильно повлиять? 
		
	У меня супер вызывается после кода (в конце init()) Посмотрите любой Report - SalesInvoice, к примеру. super() идет первым, за ним уже дальнейшая обработка. До super() обычно пишут только вызов ошибки, если отчет вызван с неправильными параметрами  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Прокопьева
			
			 
1. Отчет из формы вызываю с помощью MenuItema, которому в args записываю два параметра. 
		
	2. str param; container parameters; ; param = this.args().parm(); parameters = str2con(param,","); _headerId = conpeek(parameters,1); _wageTypeCode = conpeek(parameters,2); if (_headerId !="") { query.dataSourceNo(1).range(1).value(_headerId); } ... super(); Если запустить отчет напрямую, определяя значения критериев - все подставляет - а так первый не подставляет, во второй ноль пишет... ![]() НО, ИМХО, лучше создавать их из кода - проще читать. Метод findOrCreateRange_RU() класса Global для этого обычно использую. и еще, я всегда стремлюсь явно указывать датасорс, по tableNum обычно, потому что вот, читая ваш код, (1) почти ничего не говорит.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, кстати, если выставить Range таким образом: 
		
		
		
		
		
		
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Roman777
			
			 
Да, кстати, если выставить Range таким образом: 
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Большое спасибо за советы
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |