Приветствую уважаемых читателей.   Как и обещал в первой статье [Быстрая разработка CRUD на Java: дауншифтинг с «1С: Предприятие»][1], продолжаю описание своих OpenSource проектов, реализующих аналогичную 1С: Предприятию функциональность.  На сей раз, это СКД — система компоновки данных, и моя разработка FlexReporting ([ссылка на GitHub][2]).  В чем суть этого механизма? Это некий realtime — ROLAP инструмент, который на лету трансформирует «плоские» данные в иерархические отчеты.   На самом деле, есть много любителей поспорить, что СКД это не «тру» OLAP, но я бы напомнил, что такая вещь как агрегаты, заранее рассчитывающие и хранящие многомерные данные по всем (или по заданным) сочетаниям измерений оборотных регистров накопления — а это весомый аргумент для использования этой аббревиатуры. Впрочем, от споров по терминологии очень хотелось бы уклониться.  
 
  
   Функции СКД (и моей разработки) — дать пользователю источник данных, а уж он пусть как хочет играется с настройками отчета:  1. Задает, в какой последовательности будут выводиться данные, какие группировки будут по вертикали, какие по горизонтали.  Например: склад, товар, менеджер и т.д.  2. Задает набор показателей, и агрегатные функции (сумма, среднее, количество, минимум, максимум и проч.), которые будут к ним применяться.  Например: сумма(стоимость), среднее(количество\_товара), максимум(дата\_отгрузки).   В общем-то, этого можно добиться и в Excel, используя функционал сводных таблиц, но в базовом варианте неплохо бы иметь это в собственной системе, если предполагается формировать из нее гибко настраиваемые отчеты. Что я и сделал, изобретя на фрилансе очередной велосипед — как обычно не нашел с ходу простого и функционального решения для этой задачи, а время поджимало.  [И вот что получилось.][3]
  [1]: 
http://habrahabr.ru/post/269083/
  [2]: 
https://github.com/nikita1andreev/FlexReporting
  [3]: 
http://habrahabr.ru/post/269505/#habracut