Пример: прибыли и убытки

Для полного описания виртуального итога достаточно указать список измерений, переменных и вычисляемых групп (остальные компоненты необязательны). Измерения и переменные имеют тот же смысл, что в обычных итогах. Вычисляемые группы — это основной механизм, который делает виртуальные итоги таким мощным аналитическим инструментом. Он позволяет объединять и фильтровать данные из нескольких итогов или других вычисляемых групп в одну строчку отчета. Рассмотрим это на максимально упрощенном примере отчета о прибылях и убытках.

Чистильщик обуви в гостинице предоставляет гостям свои нехитрые услуги и принимает в качестве оплаты произвольную валюту, которую меняет на рубли по текущему курсу в соседнем обменнике валюты. Список его услуг фиксирован: чистка щеткой с ваксой, мытье тряпкой в ведре с водой и обработка обуви дезодорантом. Производственные затраты: аренда места в холле, вакса, дезодорант, щетки и тряпки. Чтобы учитывать все это, ему было бы достаточно одного итога Затраты, если бы не возня с валютой. Для учета убытков из-за обмена валют потребуется еще один итог: Конвертация.

Затраты и Конвертацию можно объединить в один отчет, используя виртуальные итоги. А чтобы отделить приходы от расходов, используются вычисляемые группы:

Вычисляемая группа Приход: итог Затраты (берем только статьи Чистка обуви, Мытье, Дезодорирование)

Вычисляемая группа Расход: итог Затраты (статьи Аренда, Вакса, Щетки, Тряпки, Дезодорант) + итог Конвертация

Итого: группа Прибыль + группа Убытки

VirtualTotal_Report1

Когда наш гипотетический чистильщик обуви сверяется со своим отчетом на новеньком планшете, он видит три строчки: Приход, Расход, Итого. Кроме того, по всем этим строчкам ему доступна сколь угодно подробная детализация — из чего конкретно складывается сегодняшняя прибыль, какие были расходы, сколько услуг оказано, сколько щеток приобретено и сколько денег потеряно из-за курсовой разницы при размене долларов на рубли:

VirtualTotal_Report2

Отчеты по виртуальным итогам полностью локализуемы. Один и тот же отчет русскоязычный пользователь увидит на русском языке, англоязычный — на английском:

VirtualTotal_Report3

Прежде чем перейти к DSL-языку для описания виртуального итога, рассмотрим вопросы локализации, чтобы далее к ним не уже возвращаться.