Это отчёты, выполняемые с помощью скрипта 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-отчётами, это можно использовать для организации произвольного поиска договоров.