05.01.2005, 12:58 | #1 |
Участник
|
Проект "Движок отчётов с поддержкой Excel"
Экспорт отчетов в Excel - больная тема для русскоязычного населения в Аксапте, особенно для новичков.
Предлагаю свой способ справится с этой проблемой - в присоединённом проекте. Основа идеи - класс MegadomeReport, наследник RunBaseReport дающий своим наследникам способность довольно просто вывести аксаптовский отчёт в "плоский" Excel или txt файл. При создании нового отчёта его нужно реализовывать следуя концепции RunbaseReport, которая является надстройкой RunbaseBatch и про которую можно почитать здесь: http://forum.mazzy.ru/index.php?showtopic=1846. Кроме того нужно поддерживать концепцию самого MegadomeReport. Для всего этого надо создать сам отчёт и класс-наследник от MegadomeReport в котором переопределить (как минимум) следующие методы: main (так чтобы он запускал экземпляр класса стандартным способом) lastValueElementName (имя актуального отчёта в AOT - см. ссылку выше) getSimpleHeader (контейнер заголовков при генерации отчёта в Excel) getSimpleLineFormat (контейнер типов колонок при генерации отчёта в Excel, поддерживаются types::Integer, types::Real, types::String, types:ate) getSimpleLine (контейнер текущей строки, извлекаемой из параметра QueryRun, особенность - значениями всегда должны являтся строки, даже если формат колонки число) Далее надо оформить простой отчёт, чтобы он выдавал подобный результат. Запускать по menuItem-ам надо не отчёт, а класс. Плюс метода заключается в том что он в качестве основы для запроса берет Query из настоящего аксаптовского отчёта, поэтому для пользователя (да и программиста тоже) будут доступны все фишки, фильтры и прочие возможности, которые есть в функционале стандартных отчётов. Примечания: - тестовый отчёт выполненный в таком стиле наз-ся MegadomeReportInventTable и запустить его можно из проекта нажав на классе "открыть" - вывод строк отчёта через метод getSimpleLine происходит через класс QueryRun, желательно полное понимание принципов работы с ним - тут на форуме где то проскальзывало - вывод в Excel и TXT через такой функционал происходит исключительно квадратно-гнездовым методом, по сравнению например с обычным функционалом отчётов, которые тоже можно сохранять в txt файлы, но там система пытается (совершенно зря) сохранить дизайн секций - класс Global нужен только из-за ф-ии real2str - вывод в Excel зависим от настроек языка последнего и системных параметров - времени делать его системно-независимым не было - если кто то захочет доработать или переработать сопротивлятся не буду, авторских прав не предьявляю - была идея переправить подобным, но более бесшовным методом класс xReport, но увы... там почти все важные моменты зарыты в системные классы, поэтому не редактируются. пришлось вот так вот извратится - для сложных отчётов рекомендую создавать вспомогательный класс, занимающийся сложными вычислениями и пользоваться им из собственно вычислимых полей или программных секций отчёта и метода getSimpleLine. - замечу что вывод в Excel выполняется в несколько раз быстрее, чем в стандартный аксаптовский отчёт |
|
|
За это сообщение автора поблагодарили: mazzy (17). |
05.01.2005, 13:09 | #2 |
Гость
|
то есть скорость самая минимальная?
|
|
05.01.2005, 13:11 | #3 |
Участник
|
Цитата:
Изначально опубликовано sassas
то есть скорость самая минимальная? |
|
05.01.2005, 13:18 | #4 |
Гость
|
прикольно. Попробую, когда понадобится. Спасибо.
|
|
05.01.2005, 13:46 | #5 |
Участник
|
Спасибо. Переместил в проекты.
|
|
06.01.2005, 18:10 | #6 |
Участник
|
похоже потерялся метод "trn_findRange" у ComExcelDocument_Ru
|
|
07.01.2005, 02:53 | #7 |
Участник
|
Цитата:
Изначально опубликовано tm
похоже потерялся метод "trn_findRange" у ComExcelDocument_Ru PHP код:
PHP код:
|
|
Теги |
download, excel, отчет, полезное, экспорт, axapta |
|
|