Сравнение периодов L4L в комбинации с фильтрами

Автор Vippo, ноября 23, 2018, 10:57:53 am

« предыдущая - следующая »

Vippo

Доброго времени суток!
Пытаюсь разобраться с работой во временных диапазонах, получилось сделать сравнение периодов но именно YTD (то есть за год и по текущую дату) текущего года и год назад., По аналогии можно продолжить далее и 2 и 3 года назад с помощью сочетания
Дата.autoCalendar.InYTD и Дата.autoCalendar.YearsAgo. Эта история работает до тех пор, пока не начинаешь использовать фильтры по годам. То есть по кварталам, месяцам и тд, все хорошо работает, как только в фильтрах ставишь ограничения по году, то перестает считаться тот или иной период, в зависимости от выбора.

По факту мне нужен более сложный механизм, чтобы в таблице не плодить столбцы на каждый год и их сравнение в процентном и абсолютном выражениях, а
например вот так

[Подразделение] *** [Продажи текущий период] *** [Продажи прошлый период] *** [дельта%]

и чтобы при выборе в фильтре 2018 года он показывал YTD 2018, а в прошлом периоде YTD 2017, соответственно, если я фильтром ставлю значение 2017, чтоб в таблице данные подставлялись в текущем периоде 2017, а в прошлом 2016 и тд. То есть нужно, чтоб система понимала текущий период основываясь на выбранный в фильтре.

В качестве примера напишу часть кода
//Продажи YTD за 2018 год
Sum( { $< [Дата.autoCalendar.InYTD]={1} ,[Дата.autoCalendar.YearsAgo]={0}, [Проведен] = {01}, [ВидОперации]={0} > } [Сумма] )

//Продажи YTD за 2017 год
Sum( { $< [Дата.autoCalendar.InYTD]={1} ,[Дата.autoCalendar.YearsAgo]={1}, [Проведен] = {01}, [ВидОперации]={0} > } [Сумма] )

Отличается по сути выборкой {1}  в [Дата.autoCalendar.YearsAgo] (типа 1 год назад и по текущую дату).
Все работает, пока не сделаешь ограничение фильтром год. Хотя при этом если в фильтре выбрать 2018 и 2017 то все опять же считает корректно.
Может так и должно быть и мне нужен в принципе другой подход для моей задачи?

admin

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

Vippo

Спасибо!
Может еще какие идеи будут. Пишите, друзья, буду признателен!

admin

Нет.
Тут без вариантов.
Пример выражения:

Sum({<[
Дата={">=$(=
date(WeekStart(MonthStart(max(Дата)),-52*2)+WeekDay(MonthStart(max(Дата))))
)
<=$(=
date(WeekStart((max(Дата)-Match(max(Дата),max(Дата))),-52*2)
+WeekDay((max(Дата)-Match(max(Дата),max(Дата)))))
)
"}>}  [Сумма Выручки])

Vippo

А тут точно все правильно написано? Не воспринимает скрипт в таком виде, что то со скобками видимо не сходится...

admin

Хм, я убрал лишнее, может зацепил скобки.
Это код для примера, понять механизм формирования интервалов в выражении фильтра анализа множеств.