|  21.03.2008, 16:06 | #1 | 
| Участник | Ошибка при генерации отчета 
			
			Добрый день! У меня вопрос довольно общий, поэтому надеюсь на ответ   Иногда при генерации отчета выходит ошибка: Error executing code: QueryBuildRange object not initialized. Подскажите, пожалуйста, как с этим бороться!! Заранее спасибо! | 
|  | 
|  21.03.2008, 16:21 | #2 | 
| Axapta Retail User | 
			
			Мне кажется, что как раз это не общий вопрос, а частный   Поэтому задавайте конкретный вопрос, какой отчет, стандартный или сами его писали? А так можно тоже ответить обобщая - инициализируйте QueryBuildRange   | 
|  | 
|  21.03.2008, 16:42 | #3 | 
| Участник | Цитата:  Отчет не Асаптовский, а сделанный по заказу и то не нами. Я столько времени потратила на то, чтобы воспроизвести ошибку, а она - зараза не вылезает! Нам прислали ее скриншот (смотри присоединенный файл). Вот и не знаем почему она появляется и как сделать так, чтобы у клиента она тоже не возникала...   | 
|  | 
|  21.03.2008, 16:49 | #4 | 
| Axapta Retail User | Цитата: 
		
			Сообщение от Iskorka
			   Дело в том, что мы работаем с клиентом, который имеет дело с Аксаптой уже более 10 лет, поэтому там столько изменений, что эту базу можно назвать их собственной   Отчет не Асаптовский, а сделанный по заказу и то не нами. Я столько времени потратила на то, чтобы воспроизвести ошибку, а она - зараза не вылезает! Нам прислали ее скриншот (смотри присоединенный файл). Вот и не знаем почему она появляется и как сделать так, чтобы у клиента она тоже не возникала...   Напишите, плиз, здесь код метода fetch() отчета bisInventTransferJournal. | 
|  | 
|  21.03.2008, 16:52 | #5 | 
| Участник | Цитата: X++: public boolean fetch() { TmpInventJournalTrans myJournalTrans; InventJournalTrans InventJournalTransQuery; QueryRun qr = new QueryRun(this); if ( qr.prompt() ) { While (qr.next()) { InventJournalTransQuery = qr.get(TableNum(InventJournalTrans)); this.FillinTmp(InventJournalTransQuery); } qr.setCursor(tmpInventJournalTrans); this.execute(1); While Select tmpInventJournalTrans { element.send(tmpInventJournalTrans); } return true; } return false; } | 
|  | 
|  21.03.2008, 17:25 | #6 | 
| Axapta Retail User | 
			
			Хорошо бы было проект самого отчета еще посмотреть. Либо код перекрытого метода prompt() \Reports\bisInventTransferJournal\Data Sources\Query\Methods\prompt | 
|  | 
|  21.03.2008, 17:31 | #7 | 
| Участник | Цитата: X++: public boolean prompt() { boolean ret; Query qr; QueryBuildRange qbr_FromWhs,qbr_ToWhs,qbr_FromLocation,qbr_ToLocation; QueryBuildRange qbr_DateRange,qbr_JournalType, qbr_EmplId; QueryBuildDataSource qbds,qbds1; Object ReportRun; ret = super(); qr = this.query(); qbds = qr.dataSourceTable(tableNum(tmpInventJournalTrans)); qbr_FromWhs = qbds.FindRange(fieldNum(tmpInventJournalTrans,FromInventLocationId)); qbr_ToWhs = qbds.findRange(fieldNum(tmpInventJournalTrans,ToInventLocationId)); qbr_FromLocation = qbds.findRange(fieldNum(tmpInventJournalTrans,FromWMSLocationId)); qbr_ToLocation = qbds.findRange(fieldNum(tmpInventJournalTrans,ToWMSLocationId)); qbds1 = qr.dataSourceTable(TableNum(InventJournalTrans)); qbr_DateRange = qbds1.findRange(fieldNum(InventJournalTrans,TransDate)); qbr_JournalType = qbds1.findRange(fieldNum(InventJournalTrans,JournalType)); qbr_EmplId = qbds1.findRange(fieldNum(InventJournalTrans,entEmplId)); reportrun = element.report(); reportrun.FromWhs(qbr_FromWhs.value()); reportrun.ToWhs(qbr_ToWhs.value()); reportrun.FromLocation(qbr_FromLocation.value()); reportrun.ToLocation(qbr_ToLocation.value()); reportrun.DateRange(qbr_DateRange.value()); reportrun.JournalType(qbr_JournalType.value()); reportrun.EmplId(qbr_EmplId.value()); return ret; } | 
|  | 
|  21.03.2008, 18:09 | #8 | 
| Axapta Retail User | 
			
			Какой-то из  Range, которые используются в методе prompt() не существует. Поэтому FindRange не возвратит Range и соответственно он будет не инициализирован и будет ругаться при получении value(). В вашем случае лучше вместо findRange использовать метод класса Global::findOrCreateRange_RU(QueryBuildDataSource _ds, FieldID _fieldID) если он есть. Если его нет, то вот его код: X++: static QueryBuildRange findOrCreateRange_RU(QueryBuildDataSource _ds, FieldID _fieldID) { QueryBuildRange range; ; range = _ds.findRange(_fieldID); // Create object if needed if(! range) { range = _ds.addRange(_fieldID); } return range; } | 
|  | 
|  21.03.2008, 18:27 | #9 | 
| Участник | 
			
			Спасибо большое!!!    Только вот еще вопрос: мне необходимо знать при каких условиях эта ошибка появляется, для того, чтобы протестить это. | 
|  | 
|  21.03.2008, 20:30 | #10 | 
| NavAx | 
			
			Попробуйте почистить данные этого отчета в sysLastValues для всех пользователей.
		 | 
|  | 
|  22.03.2008, 14:36 | #11 | 
| Участник | 
			
			Посмотрите перечень Range (фильтров) на самом отчете в АОТ. Скорее всего, какого-то из тех, который ищется в коде, там не будет. Цитата: 
		
			Сообщение от raz
			
			 Попробуйте почистить данные этого отчета в sysLastValues для всех пользователей. | 
|  |