|  06.07.2006, 08:45 | #1 | 
| Участник | Критерии на отчетах 
			
			Уважаемые Гуру!  Помогите, пожалуйста, новичку решить проблему. Нужно: определить на форме значения критериев, после чего по кнопке вызвать отчет в соответствии с выбранными значениями, причем, спрятав стандартное окошко отчета, т.е. вывести сразу на экран готовый отчет. Есть отчет, в котором определены два связанных DataSource, установлены поля Range и Sorting. В init методе отчета устанавливаю значения критериев вида: query.dataSourceNo(1).range(1).value(_headerId); Если запустить отдельно отчет, то все работает замечательно - критерии автоматически проставляются в запросе. Но еcли сначала запускается форма, от куда затем передаются значения критериев в отчет, то ничего не получается...  Значения передаются в отчет правильно, но запрос никак не изменяется, в критерии проставляются нули. Что я не так делаю? Может определение Query отчета при открытии его из формы происходит как-то по другому? Помогите, пожалуйста, разобраться | 
|  | 
|  06.07.2006, 09:01 | #2 | 
| NavAx | 
			
			Попробуйте так: PHP код: 
			 | 
|  | 
|  06.07.2006, 09:53 | #3 | 
| Участник | Не получилось Цитата: 
		
			Сообщение от Roman777
			
			 Попробуйте так: PHP код: 
			"Ошибка времени выполнения. : <пустой класс> Объект не инициализирован. Трассировка стека: (C) \Classes\<unknown>\query ..." query() выдает NULL | 
|  | 
|  06.07.2006, 10:40 | #4 | 
| NavAx | 
			
			1. Как вы вызываете отчет из формы? 2. приведите код метода init в отчете | 
|  | 
|  06.07.2006, 12:46 | #5 | 
| Участник | 
			
			А вы этот  "this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); " код написали до или после super() в init? | 
|  | 
|  13.07.2006, 16:06 | #6 | 
| Участник | Цитата: 
		
			Сообщение от kashperuk
			
			 А вы этот  "this.queryRun().query().dataSourceNo(1).range(1).value(_headerId); " код написали до или после super() в init? У меня супер вызывается после кода (в конце init()) | 
|  | 
|  13.07.2006, 16:07 | #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(); Если запустить отчет напрямую, определяя значения критериев - все подставляет - а так первый не подставляет, во второй ноль пишет...   | 
|  | 
|  13.07.2006, 16:32 | #8 | 
| Участник | Цитата: 
		
			Сообщение от Прокопьева
			
			 А это может так сильно повлиять? У меня супер вызывается после кода (в конце init()) Посмотрите любой Report - SalesInvoice, к примеру. super() идет первым, за ним уже дальнейшая обработка. До super() обычно пишут только вызов ошибки, если отчет вызван с неправильными параметрами | 
|  | 
|  13.07.2006, 16:37 | #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) почти ничего не говорит. | 
|  | 
|  13.07.2006, 16:41 | #10 | 
| NavAx | 
			
			Да, кстати, если выставить Range таким образом: PHP код: 
			 | 
|  | 
|  13.07.2006, 16:42 | #11 | 
| Участник | Цитата: 
		
			Сообщение от Roman777
			
			 Да, кстати, если выставить Range таким образом: PHP код: 
			 | 
|  | 
|  19.07.2006, 07:33 | #12 | 
| Участник | 
			
			Большое спасибо за советы
		 | 
|  |