|  08.05.2008, 11:04 | #1 | 
| Участник | RunBase + query 
			
			День добрый. Вопрос такой: есть класс - наследник от RunBase, в метод dialog добавлена кнопочка  X++: dialog.addMenuItemButton(MenuItemType::Display,identifierstr(RunBaseQueryDialog),DialogMenuItemGroup::RightGrp); X++: this.queryRun().query(qr); Кнопка выбора у меня появилась, по ее нажатию вызывается стандартная форма, выбираю там фильтры, нажимаю OK, и все, дальше ничего не происходит  , range не накладывается. Как с этим бороться? Вариант наследовать класс от RunBaseReport не подходит, т.к. отчет должен потом выводится в Excel. | 
|  | 
|  08.05.2008, 11:19 | #2 | 
| Боец | 
			
			А зачем такой трюк ? Если правильно инициализировать наследник от RunBase то кнопка Select появится автоматически, и никакого дополнительного кода не нужно. Посмотрите, например, как устроен класс BOMChangeItem. Там много лишнего, но Вам нужны методы new, buildQueryRun, queryRun, showQueryValues. Последний раз редактировалось DSPIC; 08.05.2008 в 11:26. | 
|  | 
|  08.05.2008, 11:22 | #3 | 
| Участник | Цитата: Если я не прав, докажите это кодом. | 
|  | 
|  08.05.2008, 11:29 | #4 | 
| Участник | 
			
			Посмотрите класс Tutorial_RunbaseForm - это то, что вам нужно. При инициализированном QueryRun за кнопочку отвечает метод showQueryValues(). Не нужно лишних сложностей - все проще.
		 | 
|  | |
| За это сообщение автора поблагодарили: greench (1). | |
|  08.05.2008, 11:49 | #5 | 
| Боец | Цитата: 
		
			Насколько я знаю если наследовать от RunBase то кнопочка не появится
		
	 Цитата: 
		
			не факт, что у вас к тому моменту есть какой нибудь датасорс.
		
	 | 
|  | |
| За это сообщение автора поблагодарили: greench (1). | |
|  12.05.2008, 10:35 | #6 | 
| Участник | 
			
			Спасибо за подсказки, действительно помогло.
		 | 
|  | 
|  13.05.2008, 15:33 | #7 | 
| Участник | 
			
			Возник еще вопрос. Дело в том, что выбор данных мне нужно производить из нескольких компаний. Я выбираю данные в одной компании, программно переключаюсь в следующую, вызываю queryRun.reset(), затем опять в цикле выбираю данные, но получаю записи из первой компании. Попробовал создавать новый экземпляр QueryRun, но как перенести на него все ограничения с предыдущего ума не приложу. Может кто подскажет как можно скопировать все ограничения?
		 | 
|  | 
|  13.05.2008, 15:38 | #8 | 
| Участник | 
			
			\Classes\KMKnowledgeStatistics\buildQueryWithDynalinks
		 
				__________________ aLL woRk aNd nO JoY MAKes jAck a dULL Boy | 
|  | |
| За это сообщение автора поблагодарили: DSPIC (1). | |
|  13.05.2008, 15:55 | #9 | 
| Участник | |
|  | 
|  13.05.2008, 16:08 | #10 | 
| MCTS | 
			
			В Query у DataSource в свойствах есть поле - Company. Если вы создаете запрос кодом то: queryBuildDataSource.company(""); Если не ошибаюсь, тут можно указывать компании через запятую. 
				__________________ С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. | 
|  | 
|  13.05.2008, 16:11 | #11 | 
| Участник | X++: static void Job(Args _args) { LedgerJournalTable lt; Query q; QueryRun qr; ; q = new Query(); q.addDataSource(tableNum(LedgerJournalTable)); qr = new QueryRun(q); while (qr.next()) { lt = qr.get(tableNum(LedgerJournalTable)); print(lt.JournalNum); break; } changecompany('ccc') { qr = new QueryRun(q); while (qr.next()) { lt = qr.get(tableNum(LedgerJournalTable)); print(lt.JournalNum); break; } } pause; } | 
|  | 
| Теги | 
| query, runbase, как правильно, программно | 
|  | 
| 
 |