Табличные отчёты.

Это отчёты, выполняемые с помощью скрипта 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 как <модуль>_<id>.java. Пример файла :

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 );
}

con - объект класса java.sql.Connection - соединение с базой данных;

filter - объект класса bitel.billing.server.admin.reports.BGReportFilter, содержащий параметры фильтра, переменные конфигурации модуля отчётов;

result - объект класса bitel.billing.server.reports.BGCSVReport.ReportResult, в который необходимо передать параметры отчёта и datasource;

pageSize - размер страницы;

pageIndex - номер страницы.

Пример внешнего вида отчёта :

images/download/attachments/73597600/report_csv.png
С помощью кнопки "сохранить" можно сохранить данные отчёта в csv-файл.

Примеры отчётов доступны на Wiki.

Есть возможность спрятать столбец в итоговой таблице, для этого надо в файле с описанием фильтров его значение title предворить символом '#':

<fields>
...
<item id="cid" title="#cid"/>
...

После этого столбец станет невидимым (и его настоящее заглавие останется с решёткой). Это может понадобиться, например, для нижеописанной возможности.

При клике на строки таблицы могут выполняться некоторые действия в зависимости от содержимого таблицы и содержимого в каждой строке. В данный момент имеются следующие возможности:

  • Если в таблице присутствует столбец с заголовком cid (или же невидимый #cid), то при клике на строку откроется соответствующий содержимому столбца cid договор. Как и в случае с jasper-отчётами, это можно использовать для организации произвольного поиска договоров.