http://wiki.bitel.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B5&feed=atom&action=history Табличные отчёты в динамическом коде - История изменений 2024-03-28T08:32:35Z История изменений этой страницы в вики MediaWiki 1.15.1 http://wiki.bitel.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B5&diff=5775&oldid=prev DimOn в 11:49, 30 января 2014 2014-01-30T11:49:34Z <p></p> <table style="background-color: white; color:black;"> <col class='diff-marker' /> <col class='diff-content' /> <col class='diff-marker' /> <col class='diff-content' /> <tr valign='top'> <td colspan='2' style="background-color: white; color:black;">← Предыдущая</td> <td colspan='2' style="background-color: white; color:black;">Версия 11:49, 30 января 2014</td> </tr> <tr><td colspan="2" class="diff-lineno">Строка 10:</td> <td colspan="2" class="diff-lineno">Строка 10:</td></tr> <tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div> &lt;textField name=&quot;size&quot; title=&quot;Размер&quot; textBefore=&quot;сторона&quot; textAfter=&quot;единиц&quot;/&gt;</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div> &lt;textField name=&quot;size&quot; title=&quot;Размер&quot; textBefore=&quot;сторона&quot; textAfter=&quot;единиц&quot;/&gt;</div></td></tr> <tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>&lt;/report&gt;&lt;/source&gt;</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>&lt;/report&gt;&lt;/source&gt;</div></td></tr> <tr><td colspan="2">&nbsp;</td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr> <tr><td colspan="2">&nbsp;</td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Динамический класс должен реализовывать интерфейс &quot;bitel.billing.server.reports.BGCSVReport.CSVFillerDataFields&quot; или &quot;bitel.billing.server.reports.BGCSVReport.CSVFillerData&quot; в зависимости от того, хотите ли вы задавать столбцы в классе или в файле-описании.</ins></div></td></tr> <tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr> <tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Динамический класс package ru.bitel.bgbilling.modules.reports.ShapeReport;</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Динамический класс package ru.bitel.bgbilling.modules.reports.ShapeReport;</div></td></tr> <!-- diff generator: internal 2024-03-28 08:32:35 --> </table> DimOn http://wiki.bitel.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B5&diff=5774&oldid=prev DimOn:&#32;Новая страница: «Перепишем отчёт, приведённый в статье "Табличные отчёты с динамическими столбцами" в ви…» 2014-01-30T11:47:46Z <p>Новая страница: «Перепишем отчёт, приведённый в статье &quot;<a href="/index.php/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D1%81_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%BC%D0%B8_%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%D0%BC%D0%B8" title="Табличные отчёты с динамическими столбцами">Табличные отчёты с динамическими столбцами</a>&quot; в ви…»</p> <p><b>Новая страница</b></p><div>Перепишем отчёт, приведённый в статье &quot;[[Табличные отчёты с динамическими столбцами]]&quot; в виде динамического кода вместо классического использования BGBS в файле &quot;*.java&quot;.<br /> <br /> kernel_test_anycolumn_dyncode.rep.xml<br /> &lt;source lang=&quot;xml&quot;&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br /> &lt;report title=&quot;Произвольно столбцов на динамическом коде&quot; dyn_class=&quot;ru.bitel.bgbilling.modules.reports.ShapeReport&quot; type=&quot;java&quot;&gt;<br /> &lt;combo name=&quot;mode&quot; title=&quot;Фигура&quot;&gt;<br /> &lt;item id=&quot;1&quot; title=&quot;Квадрат&quot;/&gt;<br /> &lt;item id=&quot;2&quot; title=&quot;Круг&quot;/&gt;<br /> &lt;/combo&gt;<br /> &lt;textField name=&quot;size&quot; title=&quot;Размер&quot; textBefore=&quot;сторона&quot; textAfter=&quot;единиц&quot;/&gt;<br /> &lt;/report&gt;&lt;/source&gt;<br /> <br /> Динамический класс package ru.bitel.bgbilling.modules.reports.ShapeReport;<br /> <br /> &lt;source lang=&quot;java&quot;&gt;package ru.bitel.bgbilling.modules.reports;<br /> <br /> import java.sql.Connection;<br /> import java.util.ArrayList;<br /> import java.util.HashMap;<br /> import java.util.List;<br /> import java.util.Map;<br /> <br /> import bitel.billing.server.admin.reports.BGReportFilter;<br /> import bitel.billing.server.reports.BGCSVReport.ReportResult;<br /> <br /> /**<br /> * Готовый тестовый класс для отчёта &quot;Произвольно столбцов на динамическом коде&quot; (kernel_test_anycolumn_dyncode.rep.xml)<br /> * По аналогии с отчётом kernel_test_anycolumn_java<br /> * @author dimon<br /> */<br /> public class ShapeReport<br /> implements bitel.billing.server.reports.BGCSVReport.CSVFillerDataFields<br /> {<br /> @Override<br /> public void fillReport( Connection con, BGReportFilter filter, ReportResult result, Map&lt;String, String&gt; fields )<br /> {<br /> int mode = filter.getIntParam( &quot;mode&quot;, 1 );<br /> int size = filter.getIntParam( &quot;size&quot;, 13 );<br /> <br /> List&lt;Map&lt;String, String&gt;&gt; data = new ArrayList&lt;Map&lt;String, String&gt;&gt;( 1000 );<br /> <br /> // формируем данные для самой таблицы<br /> for(int row=0; row&lt;size; row++)<br /> {<br /> Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();<br /> for(int col=0; col&lt;size; col++)<br /> {<br /> if( mode == 1 || iscircleable(row, col, size) ) // если квадрат или точка внутри круга<br /> {<br /> map.put( &quot;c&quot;+col, String.valueOf( row+1 ) + &quot;/&quot; + String.valueOf( col+1 ) );<br /> }<br /> } <br /> data.add( map );<br /> }<br /> <br /> result.setData( data );<br /> <br /> // формируем данные о столбцах<br /> for(int col=0; col&lt;size; col++)<br /> {<br /> String colid = &quot;c&quot;+col;<br /> String colname = String.valueOf( col+1 );<br /> int colwidth = 24 + col;<br /> fields.put( colid, colname +&quot;##&quot; + String.valueOf( colwidth ) );<br /> }<br /> }<br /> <br /> public static boolean iscircleable(int row, int col, int size)<br /> {<br /> double r = size/2.0d;<br /> double x = col - r;<br /> double y = row - r;<br /> return Math.sqrt(x*x+y*y)&lt;=r;<br /> }<br /> }&lt;/source&gt;<br /> <br /> {{Актуальность Версии|версия=6.1}}</div> DimOn