Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
vkozlov
Partner - Creator
Partner - Creator

Расчет начальных остатков по таблице движений

Всем привет.

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

Вопрос касается остатков

Опишу относительно начального остатка:

Выборка для отчета организована не через отбор по измерению, а при помощи переменных Начало Конец

280c57ba2ae647759cf6e78fd01e2365.png

Формула расчета начального остатка организована так:

-------------

Sum({<КалендарьДата={'>=$(vMinDate)<$(vReportDate1)'},КалендарьГод=,КалендарьМесяц=,КалендарьДень=,КалендарьЧетверть=,КалендарьПолугодие=,КалендарьНеделя=,КалендарьМесяцГод=>}IF(РегистрыВидДвижения='1',-1,1)*РегистрыКоличество)

Для расчета начального остатка на определенный период необходим расчет всех данных от минимальной даты в таблице vMinDate до даты, заданной переменной vReportDate1 = Начало

-------------


Расчет в рамках периода, заданного переменными Начало и Конец - получается корректный.

НО!

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

Есть ли у кого идеи?

Необходимо по таблице движений выявить динамику начальных остатков по периодам(например по датам). То есть под каждой датой расчитываслись движения не на эту дату, а по периоду от минимальной даты в таблице, до этой даты. Как посчитать начальный остаток на определенную дату - понятно.


Есть вариант расчитать таблицу остатков, но это миллионы строк. Если возможно это сделать через формулу - было бы супероптимально

1 Solution

Accepted Solutions
Anna_Klimkova
Employee
Employee

Владимир,

посмотрите вот эту ветку Остатки на каждый день.

View solution in original post

5 Replies
Eugeny_Ilyin
Creator II
Creator II

Привет.
Если нужна динамика - то лучше отдельные таблицы с остатками.

Миллионы строк из таблиц работают намного лучше чем эти же расчеты в модели на лету.
Было обсуждение в этой группе.

Anna_Klimkova
Employee
Employee

Владимир,

посмотрите вот эту ветку Остатки на каждый день.

vkozlov
Partner - Creator
Partner - Creator
Author

Анна,

Гениально .. Удивительно что все это можно сделать без генерации регистра остатков на уровне загрузки.

Anna_Klimkova
Employee
Employee

Владимир,

рада, что вам понравился этот вариант.

 

На всякий случай небольшое дополнение:

 

При использовании приема AsOfTable для накопительного расчета остатков в качестве измерения обычное поле Дата заменяется на новое измерение, специально подготовленное в скрипте ДатаН. (Каждая дата в ДатаН, соответствует всем датам из Дата, предшествующим или равным этой дате)

 

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

 

Для этого в скрипте стоит добавить новое поле-флаг =1, когда Дата = ДатаН.

Тогда в диаграмме с измерением ДатаН остатки по-прежнему будут вычисляться по формуле

sum(ТипДвиж*КолДвиж),  а Движение = sum(ТипДвиж*КолДвиж*FlagD)

Пример во вложении.

  

vkozlov
Partner - Creator
Partner - Creator
Author

Да, Анна, спасибо

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

Sum(If(КалендарьДата=КалендарьДатаН,(IF(РегистрыВидДвижения='1',1,0)*РегистрыПартииКоличество)))