public class JUReport01 extends BasicTest {
@Ignore
@Test
public void generateReport01() throws JIException, ParseException {
OCQuery query = app.newQuery();
String queryText = "ВЫБРАТЬ РАЗРЕШЕННЫЕ "
+ " СчетаРасходов.Счет КАК Счет "
+ " ПОМЕСТИТЬ СчетаРасходов "
+ " ИЗ "
+ " (ВЫБРАТЬ "
+ " ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродаж) КАК Счет "
+ " "
+ " ОБЪЕДИНИТЬ "
+ " "
+ " ВЫБРАТЬ "
+ " ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_Акцизы) "
+ " "
+ " ОБЪЕДИНИТЬ "
+ " "
+ " ВЫБРАТЬ "
+ " ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_ЭкспортныеПошлины) "
+ " "
+ " ОБЪЕДИНИТЬ "
+ " "
+ " ВЫБРАТЬ "
+ " ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_РасходыНаПродажу) "
+ " "
+ " ОБЪЕДИНИТЬ "
+ " "
+ " ВЫБРАТЬ "
+ " ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_УправленческиеРасходы)) КАК СчетаРасходов "
+ " "
+ " ИНДЕКСИРОВАТЬ ПО "
+ " Счет "
+ " ; "
+ " ВЫБРАТЬ РАЗРЕШЕННЫЕ "
+ " \"\" КАК Знак, "
+ " Расходы.СуммаОборотДт КАК Сумма, "
+ " Расходы.Период КАК Период, "
+ " Расходы.Счет КАК Счет, "
+ " \"Доходы без НДС\" КАК Вид, "
+ " Расходы.КорСчет, "
+ " \"Дт\" КАК БухВидРесурса "
+ " ПОМЕСТИТЬ Расходы "
+ " ИЗ "
+ " РегистрБухгалтерии.Хозрасчетный.Обороты( "
+ " &НачалоПериода, "
+ " &КонецПериода, "
+ " Месяц, "
+ " Счет В ИЕРАРХИИ "
+ " (ВЫБРАТЬ "
+ " СчетаРасходов.Счет "
+ " ИЗ "
+ " СчетаРасходов КАК СчетаРасходов), "
+ " , "
+ " Организация = &Организация, "
+ " , "
+ " ) КАК Расходы "
+ " "
+ " ИНДЕКСИРОВАТЬ ПО "
+ " Период "
+ " ; "
+ " ВЫБРАТЬ РАЗРЕШЕННЫЕ "
+ " \"\" КАК Знак, "
+ " Доходы.СуммаОборотКт КАК Сумма, "
+ " Доходы.Период КАК Период, "
+ " Доходы.Счет КАК Счет, "
+ " Доходы.КорСчет, "
+ " \"Кт\" КАК БухВидРесурса "
+ " ПОМЕСТИТЬ Доходы "
+ " ИЗ "
+ " РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Месяц, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Выручка)), , Организация = &Организация, , ) КАК Доходы "
+ " "
+ " ОБЪЕДИНИТЬ ВСЕ "
+ " "
+ " ВЫБРАТЬ "
+ " \"-\", "
+ " -НДС.СуммаОборотДт, "
+ " НДС.Период, "
+ " НДС.Счет, "
+ " НДС.КорСчет, "
+ " \"Дт\" "
+ " ИЗ "
+ " РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Месяц, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)), , Организация = &Организация, , ) КАК НДС "
+ " "
+ " ИНДЕКСИРОВАТЬ ПО "
+ " Период "
+ " ; "
+ " ВЫБРАТЬ РАЗРЕШЕННЫЕ "
+ " Расходы.Знак, "
+ " Расходы.Сумма, "
+ " Расходы.Период, "
+ " Расходы.Счет, "
+ " \"Расходы\" КАК Вид, "
+ " Расходы.КорСчет, "
+ " Расходы.БухВидРесурса "
+ " ИЗ "
+ " Расходы КАК Расходы "
+ " "
+ " ОБЪЕДИНИТЬ ВСЕ "
+ " "
+ " ВЫБРАТЬ "
+ " Доходы.Знак, "
+ " Доходы.Сумма, "
+ " Доходы.Период, "
+ " Доходы.Счет, "
+ " \"Доходы без НДС\", "
+ " Доходы.КорСчет, "
+ " Доходы.БухВидРесурса "
+ " ИЗ "
+ " Доходы КАК Доходы "
+ " "
+ " ОБЪЕДИНИТЬ ВСЕ "
+ " "
+ " ВЫБРАТЬ "
+ " NULL, "
+ " ВложенныйЗапрос.Сумма, "
+ " ВложенныйЗапрос.Период, "
+ " ВложенныйЗапрос.Счет, "
+ " ВложенныйЗапрос.Вид, "
+ " NULL, "
+ " NULL "
+ " ИЗ "
+ " (ВЫБРАТЬ "
+ " ЕСТЬNULL(ДоходыСвернуто.Сумма, 0) - ЕСТЬNULL(РасходыСвернуто.Сумма, 0) КАК Сумма, "
+ " ВЫБОР "
+ " КОГДА ДоходыСвернуто.Период ЕСТЬ NULL "
+ " ТОГДА РасходыСвернуто.Период "
+ " ИНАЧЕ ДоходыСвернуто.Период "
+ " КОНЕЦ КАК Период, "
+ " ВЫБОР "
+ " КОГДА ЕСТЬNULL(ДоходыСвернуто.Сумма, 0) - ЕСТЬNULL(РасходыСвернуто.Сумма, 0) >= 0 "
+ " ТОГДА \"Прибыль\" "
+ " ИНАЧЕ \"Убыток\" "
+ " КОНЕЦ КАК Вид, "
+ " NULL КАК Счет "
+ " ИЗ "
+ " (ВЫБРАТЬ "
+ " СУММА(Доходы.Сумма) КАК Сумма, "
+ " Доходы.Период КАК Период "
+ " ИЗ "
+ " Доходы КАК Доходы "
+ " "
+ " СГРУППИРОВАТЬ ПО "
+ " Доходы.Период) КАК ДоходыСвернуто "
+ " ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ "
+ " СУММА(Расходы.Сумма) КАК Сумма, "
+ " Расходы.Период КАК Период "
+ " ИЗ "
+ " Расходы КАК Расходы "
+ " "
+ " СГРУППИРОВАТЬ ПО "
+ " Расходы.Период) КАК РасходыСвернуто "
+ " ПО ДоходыСвернуто.Период = РасходыСвернуто.Период) КАК ВложенныйЗапрос";
query.setText(queryText);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
query.setParameter("НачалоПериода", new OCVariant(sdf.parse("2009-01-01")));
query.setParameter("КонецПериода", new OCVariant(sdf.parse("2010-01-01")));
OCCatalogManager catMan = app.getCatalogManager("Организации");
OCCatalogSelection catSel = catMan.select();
catSel.next();
OCCatalogRef orgRef = catSel.getRef();
query.setParameter("Организация", new OCVariant(orgRef));
OCQueryResult result = query.execute();
OCValueTable table = result.unload();
System.out.println(table.listColumns());
OCStructure structure = app.newStructure();
structure.insert("ТаблицаДанных", table);