Привет всем,
Надеюсь форум скоро снова проснется, а то всего несколько сообщений за январь.
Даны следующие исходные данные по материалу:
Code:
0Material ¦ Movement            ¦ 0Fiscper ¦ Value
AAA       ¦ Beginning Inventory ¦ 03.2016  ¦ 100
AAA       ¦ Receipt             ¦ 03.2016  ¦ 200
AAA       ¦ Ending Inventory    ¦ 03.2016  ¦ 300
AAA       ¦ Beginning Inventory ¦ 04.2016  ¦ 300
AAA       ¦ Ending Inventory    ¦ 04.2016  ¦ 300
AAA       ¦ Beginning Inventory ¦ 05.2016  ¦ 300
AAA       ¦ Consumption         ¦ 05.2016  ¦ 250
AAA       ¦ Ending Inventory    ¦ 05.2016  ¦ 50
Если пользователь запрашивает период, а не конкретный месяц, то в строках Beginning/Ending Inventory должно быть значение именно на начало и конец периода (определяем через Customer-Exit), а в остальных строках сумма за период. Вроде решение простое, определить структуру с Типом движения и в ячейках ограничить показатель 0Fiscper для Beginning/Ending Inventory началом и концом периода, выглядит не плохо:
Code:
0FISCPER = 03.2016-05.2016
0Material ¦ Movement            ¦ Value
AAA       ¦ Beginning Inventory ¦ 100 / на 03.2016
AAA       ¦ Receipt             ¦ 200 / за период
AAA       ¦ Consumption         ¦ 250 / за период
AAA       ¦ Ending Inventory    ¦ 50  / на 05.2016
если изменить фильтр, то все еще ок:
Code:
0FISCPER = 01.2016-12.2016
0Material ¦ Movement            ¦ Value
AAA       ¦ Beginning Inventory ¦ 0 / на 01.2016
AAA       ¦ Receipt             ¦ 200 / за период
AAA       ¦ Consumption         ¦ 250 / за период
AAA       ¦ Ending Inventory    ¦ 0  / на 12.2016
Но все плывет, если пользователь хочет посмотреть развертку по 0FISCPER, ведь получается, что для Beginning/Ending Inventory они ограничены переменной:
Code:
0Material ¦ Movement            ¦ 0Fiscper ¦ Value
AAA       ¦ Beginning Inventory ¦ 01.2016  ¦ 
AAA       ¦ Beginning Inventory ¦ 02.2016  ¦ 
AAA       ¦ Beginning Inventory ¦ 03.2016  ¦ 100
AAA       ¦ Beginning Inventory ¦ 04.2016  ¦ 0 – Ошибка, значение существует
AAA       ¦ Beginning Inventory ¦ 05.2016  ¦ 0 – Ошибка, значение существует
Использовать exceptional aggregation (First Value для Beginning Inventory и Last Value для Ending Inventory)  в таком построении не удается, потому что при фильтре 01.2016-12.2016, First/Last Value будут взяты из транзакционных данных, то есть данные за 03.2016 и 05.2016, соответственно, а не из 01 и 12, как хотелось бы.
Создал формулу и заполнил нулями если пусто, в надежде использовать для показателя, но агрегация происходит до калькуляции (раньше была такая опция, в 7.4 уже нету).
Пока как временное решение, пробую дополнительную генерацию строк в ДСО и кубе для месяцев, где нет данных, заполнить их 0, но это увеличивает нагрузку на систему и раздувает куб/дсо до четырех раз, зато отчет работает нормально 

Code:
0Material ¦ Movement            ¦ 0Fiscper ¦ Value
AAA       ¦ Beginning Inventory ¦ 01.2016  ¦ 0 - Новое значение
AAA       ¦ Beginning Inventory ¦ 02.2016  ¦ 0 - Новое значение
AAA       ¦ Beginning Inventory ¦ 03.2016  ¦ 100
AAA       ¦ Beginning Inventory ¦ 04.2016  ¦ 0 - Новое значение
AAA       ¦ Beginning Inventory ¦ 05.2016  ¦ 0 - Новое значение
...
и так для всех типов движений
Как обхитрить систему?