На скриншоте я изобразил, какой отчет имеем.
Мне надо в ресурсах вывести еще и разницу с предыдущим годом. Например, рядом с колонкой "Количество" (2020) надо вывести колонку "Разница", т.е. количество 2020 минус количество 2019.
Имеет смысл привести текст запроса. Особенность отчета в том, что год продаж по просьбе клиента начинается не с 1 января, а условно с 1 августа (в общем с середины) календарного года.
ВЫБРАТЬ
ПродажиОбороты.КоличествоОборот КАК Количество,
ПродажиОбороты.Смена.КалендарныйПериод КАК КалендарныйПериод,
ПродажиОбороты.Программа КАК Программа,
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОбороты.ПериодМесяц
ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОбороты.ПериодМесяц, ГОД), СЕКУНДА, 1)
ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодМесяц, ГОД)
КОНЕЦ КАК ГодПродаж
ИЗ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
(1)
Я думаю нужно добавить в источник запроса еще одну таблицу Продажи.Обороты и сделать соединение по периоду хитрое. Тот еще говнокод получается :-) Но есть шанс что заработает.
Примерно так:
ВЫБРАТЬ
ПродажиОборотыТекущийГод.КоличествоОборот КАК Количество,
ПродажиОборотыТекущийГод.КоличествоОборот - ПродажиОборотыПредыдущийГод КАК Разница,
ПродажиОборотыТекущийГод.Смена.КалендарныйПериод КАК КалендарныйПериод,
ПродажиОборотыТекущийГод.Программа КАК Программа,
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОборотыТекущийГод.ПериодМесяц
ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), СЕКУНДА, 1)
ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД)
КОНЕЦ КАК ГодПродаж
ИЗ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОборотыТекущийГод
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОборотыПредыдущийГод
ПО ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОборотыТекущийГод.ПериодМесяц
ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), СЕКУНДА, 1)
ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД)
КОНЕЦ - 1 = ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОборотыПредыдущийГод.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОборотыПредыдущийГод.ПериодМесяц
ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОборотыПредыдущийГод.ПериодМесяц, ГОД), СЕКУНДА, 1)
ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОборотыПредыдущийГод.ПериодМесяц, ГОД)
КОНЕЦ
и ПродажиОборотыТекущийГод.Смена.КалендарныйПериод = ПродажиОборотыПредыдущийГод.Смена.КалендарныйПериод
(2) Да, у Вас я понял смысл. Сам так делал поначалу, когда период (год) был с 1 января. Да, тогда мы получаем данные текущего года, а потом данные предыдущего года. Клеим таблицы и все.
Но.
Здесь же, когда год начинается с середины, нам проще дать пользователю возможность указать сразу период целиком за произвольное число лет.
Мы же все равно будет резать год на две части.
Поле ГодПродаж я привожу к дате начала какого-то года. А потом группирую данные запроса.
а если на курс сходить, то там есть правильный ответ. с адекватным результатом. у вас в текущем значении разве выражение "Количество" написано? или все-таки "Сумма(Количество)"?
Я бы сделал еще второй запрос но со сдвигом не 7 мес а 7+12 или 7-12 (тут надо просто проверить) присваивал бы ему имя Год продаж+1, потом объединить эти 2 запроса, сделав 2 ресурса, в первой таблице
выбор Сумма как ГодПродаж,
0 КАК ПредыдущийГод
ИЗ ТЗ1
ОБЪЕДИНИТЬ
выбор 0 как ГодПродаж,
Сумма КАК ПредыдущийГод
ИЗ ТЗ2
потом еще это все сгруппировать, чтобы ресурсы сложились и потом в итоговой таблице уже просто формулу ГодПродаж- ПредыдущийГод
(12)любой период подойдет с произвольным числом периодов - главное в 1 таблице и во второй правильно рассчитать ГОД и все, хоть 50 лет задавай в отчете
К примеру для 1 таблицы дата 01.09.2019 преобразуется в 2020, а для второй 2020-1=2019 и всё, а объединение и группировка идет по 2020г таким образом идет сдвиг, кстати сдвиг можно делать хоть на год, хоть на 2 и тд