Это отчёты, выполняемые с помощью скрипта Beanshell. С возможностью сохранения в csv.
Фильтр отчёта настраивается так, как описано выше. Кроме того, нужно сделать следующие модификации: в файле *.rep.xml нужно поместить атрибут type=""java":
<report title="Test" type="java"> <address title="Адрес" cityName="cityId" streetName="streetId" houseName="house"/> <combo name="status" title="Статус"> <item id="-1" title="любой"/> <item id="0" title="активен"/> <item id="4" title="приостановлен"/> <item id="3" title="закрыт"/> </combo> <fields> <item id="title" title="Имя"/> <item id="comment" title="Комментарий"/> </fields> </report>
В теге fields указываются заголовки полей данного отчёта .
Создайте файл и сохраните его в директории reports как
. Пример файла :public void fillReport( con, filter, bitel.billing.server.reports.BGCSVReport.ReportResult result ) { query = " SELECT * from contract "; query += " LIMIT " + ((pageIndex - 1) * pageSize )+ "," + pageSize; ps = con.prepareStatement( query ); data = new ArrayList( 1000 ); rs = ps.executeQuery(); while( rs. next() ) { title = rs.getString("title"); comment = rs.getString("comment"); map = new HashMap(); map.put( "title", title ); map.put( "comment", comment ); data.add( map ); } result.setData( data ); }
- объект класса java.sql.Connection - соединение с базой данных;
- объект класса bitel.billing.server.admin.reports.BGReportFilter, содержащий параметры фильтра, переменные конфигурации модуля отчётов;
- объект класса bitel.billing.server.reports.BGCSVReport.ReportResult, в который необходимо передать параметры отчёта и datasource;
- размер страницы;
- номер страницы.
Пример внешнего вида отчёта :
С помощью кнопки "сохранить" можно сохранить данные отчёта в csv-файл.
Примеры отчётов доступны на Wiki.
Есть возможность спрятать столбец в итоговой таблице, для этого надо в файле с описанием фильтров его значение title предворить символом '#':
<fields> ... <item id="cid" title="#cid"/> ...
После этого столбец станет невидимым (и его настоящее заглавие останется с решёткой). Это может понадобиться, например, для нижеописанной возможности.
При клике на строки таблицы могут выполняться некоторые действия в зависимости от содержимого таблицы и содержимого в каждой строке. В данный момент имеются следующие возможности:
Если в таблице присутствует столбец с заголовком cid (или же невидимый #cid), то при клике на строку откроется соответствующий содержимому столбца cid договор. Как и в случае с jasper-отчётами, это можно использовать для организации произвольного поиска договоров.