Привет всем,
Надеюсь форум скоро снова проснется, а то всего несколько сообщений за январь.
Даны следующие исходные данные по материалу:
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 - Новое значение
...
и так для всех типов движений
Как обхитрить систему?