Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Всем привет.
По таблице движений требовалось сформировать отчет, который отображает начальные и конечные остатки на определенный период и сами движения.
Вопрос касается остатков
Опишу относительно начального остатка:
Выборка для отчета организована не через отбор по измерению, а при помощи переменных Начало Конец
Формула расчета начального остатка организована так:
-------------
Sum({<КалендарьДата={'>=$(vMinDate)<$(vReportDate1)'},КалендарьГод=,КалендарьМесяц=,КалендарьДень=,КалендарьЧетверть=,КалендарьПолугодие=,КалендарьНеделя=,КалендарьМесяцГод=>}IF(РегистрыВидДвижения='1',-1,1)*РегистрыКоличество)
Для расчета начального остатка на определенный период необходим расчет всех данных от минимальной даты в таблице vMinDate до даты, заданной переменной vReportDate1 = Начало
-------------
Расчет в рамках периода, заданного переменными Начало и Конец - получается корректный.
НО!
После появилась необходимость разбить эту таблицу на периоды, например по датам, чтобы проследить динамику начальных остатков... тут попал в тупик. т.к. при добавлении измерения дата - получил огромную таблицу со всеми датами, начиная с vMinDate - минимальной даты в таблице и в каждой колонке рассчитывался не начальный остаток, а движения на эту дату.
Есть ли у кого идеи?
Необходимо по таблице движений выявить динамику начальных остатков по периодам(например по датам). То есть под каждой датой расчитываслись движения не на эту дату, а по периоду от минимальной даты в таблице, до этой даты. Как посчитать начальный остаток на определенную дату - понятно.
Есть вариант расчитать таблицу остатков, но это миллионы строк. Если возможно это сделать через формулу - было бы супероптимально
Привет.
Если нужна динамика - то лучше отдельные таблицы с остатками.
Миллионы строк из таблиц работают намного лучше чем эти же расчеты в модели на лету.
Было обсуждение в этой группе.
Владимир,
посмотрите вот эту ветку Остатки на каждый день.
Анна,
Гениально .. Удивительно что все это можно сделать без генерации регистра остатков на уровне загрузки.
Владимир,
рада, что вам понравился этот вариант.
На всякий случай небольшое дополнение:
При использовании приема AsOfTable для накопительного расчета остатков в качестве измерения обычное поле Дата заменяется на новое измерение, специально подготовленное в скрипте ДатаН. (Каждая дата в ДатаН, соответствует всем датам из Дата, предшествующим или равным этой дате)
Но часто бывает, когда в одной таблице или диаграмме нужно показать и остатки и движение.
Для этого в скрипте стоит добавить новое поле-флаг =1, когда Дата = ДатаН.
Тогда в диаграмме с измерением ДатаН остатки по-прежнему будут вычисляться по формуле
sum(ТипДвиж*КолДвиж), а Движение = sum(ТипДвиж*КолДвиж*FlagD)
Пример во вложении.
Да, Анна, спасибо
Это как раз первый вопрос с которым столкнулись в данной ситуации. Вышли без флага, напрямую прописав в формуле выражения условие
Sum(If(КалендарьДата=КалендарьДатаН,(IF(РегистрыВидДвижения='1',1,0)*РегистрыПартииКоличество)))