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, как правильно, программно |
|
|