Коллеги, привет!

На скриншоте я изобразил, какой отчет имеем.
Мне надо в ресурсах вывести еще и разницу с предыдущим годом. Например, рядом с колонкой "Количество" (2020) надо вывести колонку "Разница", т.е. количество 2020 минус количество 2019.

Имеет смысл привести текст запроса. Особенность отчета в том, что год продаж по просьбе клиента начинается не с 1 января, а условно с 1 августа (в общем с середины) календарного года.

```1c
    ВЫБРАТЬ
    ПродажиОбороты.КоличествоОборот КАК Количество,
    ПродажиОбороты.Смена.КалендарныйПериод КАК КалендарныйПериод,
    ПродажиОбороты.Программа КАК Программа,
    ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОбороты.ПериодМесяц
    ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОбороты.ПериодМесяц, ГОД), СЕКУНДА, 1)
    ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодМесяц, ГОД)
    КОНЕЦ КАК ГодПродаж
    ИЗ
    РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
```

Если я нагавнокодил, поправьте меня)
---
На скрине идея и цепочка таблиц, читать по номерам табличек слева на право
---
Я думаю нужно добавить в источник запроса еще одну таблицу Продажи.Обороты и сделать соединение по периоду хитрое. Тот еще говнокод получается :-) Но есть шанс что заработает.

Примерно так:

```1c
    ВЫБРАТЬ
    ПродажиОборотыТекущийГод.КоличествоОборот КАК Количество,
    ПродажиОборотыТекущийГод.КоличествоОборот - ПродажиОборотыПредыдущийГод КАК Разница,
    ПродажиОборотыТекущийГод.Смена.КалендарныйПериод КАК КалендарныйПериод,
    ПродажиОборотыТекущийГод.Программа КАК Программа,
    ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОборотыТекущийГод.ПериодМесяц
    ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), СЕКУНДА, 1)
    ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД)
    КОНЕЦ КАК ГодПродаж
    ИЗ
    РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОборотыТекущийГод
    ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОборотыПредыдущийГод
    ПО ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОборотыТекущийГод.ПериодМесяц
    ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД), СЕКУНДА, 1)
    ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОборотыТекущийГод.ПериодМесяц, ГОД)
    КОНЕЦ - 1 = ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ПродажиОборотыПредыдущийГод.ПериодМесяц, ГОД), МЕСЯЦ, 7) > ПродажиОборотыПредыдущийГод.ПериодМесяц
    ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ПродажиОборотыПредыдущийГод.ПериодМесяц, ГОД), СЕКУНДА, 1)
    ИНАЧЕ НАЧАЛОПЕРИОДА(ПродажиОборотыПредыдущийГод.ПериодМесяц, ГОД)
    КОНЕЦ
    и ПродажиОборотыТекущийГод.Смена.КалендарныйПериод = ПродажиОборотыПредыдущийГод.Смена.КалендарныйПериод
```
---
Да, у Вас я понял смысл. Сам так делал поначалу, когда период (год) был с 1 января. Да, тогда мы получаем данные текущего года, а потом данные предыдущего года. Клеим таблицы и все.
Но.
Здесь же, когда год начинается с середины, нам проще дать пользователю возможность указать сразу период целиком за произвольное число лет.
Мы же все равно будет резать год на две части.
Поле ГодПродаж я привожу к дате начала какого-то года. А потом группирую данные запроса.

(4) Я на Ваши курсы вряд ли пойду.
Гуглил я свой вопрос, прежде чем тут писать.
Вот например:
http://1cskd.ru/2014/05/poleznye-primery-poschitat-raznicu-s-predydushhej-zapisyu/

Сделав по этому примеру вычисляемое поле:
isNULL((ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Количество", , , "Предыдущая", "Предыдущая") - Количество), 0)
я получил неадекватный результат. см. скрин.

(5)
Посмотрел отчет - параметр группировки "Колонка" можно не указывать
А как тогда без группировок по годам? Мне по условию задачи надо пользователю вывести продажи по колонкам (годам) и прирост.
---
Я на Ваши курсы вряд ли пойду.

так никто и не гонит

(7) я получил неадекватный результат. см. скрин.

а если на курс сходить, то там есть правильный ответ. с адекватным результатом. у вас в текущем значении разве выражение "Количество" написано? или все-таки "Сумма(Количество)"?

есть еще ошибка. дальше сами
---
только не совсем уверен что по календарному периоду надо соединять. А вот по программе - надо. тут я накосячил
---
на закладке ресурсы

Предыдущее = ВычислитьВыражение("Сумма(Ресурс)","Колонка",,"Предыдущая","Предыдущая")

а так вообще почти полностью аналогичный отчет разбирали в нашем курсе https://learn.programstore.ru/video_kurs_skd
---
Посмотрел отчет - параметр группировки "Колонка" можно не указывать
---
При подсчете разницы нужно учесть, что для первой колонки выражение будет иметь значение NULL
---
Я бы сделал еще второй запрос но со сдвигом не 7 мес а 7+12 или 7-12 (тут надо просто проверить) присваивал бы ему имя Год продаж+1, потом объединить эти 2 запроса, сделав 2 ресурса, в первой таблице

```1c
    выбор Сумма как ГодПродаж,
    0 КАК ПредыдущийГод
    ИЗ ТЗ1
    ОБЪЕДИНИТЬ
    выбор 0 как ГодПродаж,
    Сумма КАК ПредыдущийГод
    ИЗ ТЗ2
```

потом еще это все сгруппировать, чтобы ресурсы сложились и потом в итоговой таблице уже просто формулу ГодПродаж- ПредыдущийГод
---
Не пойму. Как порезать год на два я понял и сделал. В топике есть мой текст запроса.
Я не могу прирост (разницу) по годам вычислить.

(9) Хорош. Давайте без рекламы. Нет желания помочь, идите мимо.
---
На скрине идея и цепочка таблиц, читать по номерам табличек слева на право
---
Этот вариант подходит для фиксированного числа периодов. А если произвольное число лет юзер задаст? В этом загвоздка.
---
любой период подойдет с произвольным числом периодов - главное в 1 таблице и во второй правильно рассчитать ГОД и все, хоть 50 лет задавай в отчете
---
К примеру для 1 таблицы дата 01.09.2019 преобразуется в 2020, а для второй 2020-1=2019 и всё, а объединение и группировка идет по 2020г таким образом идет сдвиг, кстати сдвиг можно делать хоть на год, хоть на 2 и тд
---
Может я сразу не догнал. Спасибо, я попробую как Вы сказали. Кажется понял.