Имя: Пароль:
1C
1С v8
СКД Продажи по периодам с процентом изменения сумм продаж
0 varyag
 
12.03.18
11:10
Всем привет.
Есть отчетик на СКД с текстом запроса таким:

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Магазин,
    ВЫБОР
        КОГДА &Периодичность = "День"
            ТОГДА ПродажиОбороты.ПериодДень
        КОГДА &Периодичность = "Неделя"
            ТОГДА ПродажиОбороты.ПериодНеделя
        КОГДА &Периодичность = "Месяц"
            ТОГДА ПродажиОбороты.ПериодМесяц
        КОГДА &Периодичность = "Квартал"
            ТОГДА ПродажиОбороты.ПериодКвартал
        КОГДА &Периодичность = "Год"
            ТОГДА ПродажиОбороты.ПериодГод
    КОНЕЦ КАК Период,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот,
    ПродажиОбороты.СтоимостьБезСкидокОборот,
    ПродажиОбороты.НДСОборот,
    ПродажиОбороты.Номенклатура.ЕдиницаИзмерения
ИЗ
    РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты

Отчет выводит продажи (скрин прилагаю).
http://storage3.static.itmages.ru/i/18/0312/h_1520842150_3397151_148cd47ec4.png

Мне нужно к имеющимся колонкам в каждом периоде добавить колонку, показывающую процент изменения относительно предыдущего периода.

Буду очень благодарен за подсказки, т.к. сам что-то не могу дойти
1 Gantosha
 
12.03.18
11:14
В СКД есть функция которая позволяет двигаться по дереву результата вверх и вниз - т.е. там есть указатель на предыдущий член , как называется не помню. Насколько удобно ей пользоваться тоже не скажу, вполне возможно, что проще его искусственно посчитать и вывести отдельно.
2 _Дайвер_
 
12.03.18
11:18
(0) Вычисляемое поле добавь, и напиши формулу в нем, по своим условиям
3 varyag
 
12.03.18
11:18
(1) Спасибо. И в запросе пока не вкуриваю как посчитать и вычисляемым полем как сделать не пойму, и пользовательское поле тоже не пойму как заюзать... А может это всё вообще не годится в данном случае
4 varyag
 
12.03.18
11:20
(2) В вычисляемом поле то как одно и то же поле разделить по периоду?:(
т.е. В выражении я же но могу просто написать: СтоимостьБезСкидокОборот*100/СтоимостьБезСкидокОборот-100. в таком случае всегда результат будет ноль...
5 Gantosha
 
12.03.18
11:24
Есть предыдущий член и есть последующий. С ними все хорошо когда они во-первых есть, а во-вторых их  последовательность определена. А вот чем она в 1с определяется мне не понятно, т.е. при перекручивании отчета выдавать будет что-то не предсказуемое.
6 _Дайвер_
 
12.03.18
11:34
А если на уровне конструктора запроса в доступные поля добавить своё поле, и его рассчитывать? и после этого выводить его для конкретного периода?
7 Gantosha
 
12.03.18
11:38
Куда проще посчитать два периода , а затем рассчитать этот процент. А предыдущий это намек на возможности .
8 varyag
 
12.03.18
11:46
(7) Короче в пользовательских полях написал такую штуку

Выбор
    Когда [Параметры.Периодичность] = "Неделя"
        Тогда Неделя(Период)
    Иначе ""
Конец

В итоге в поле выводится номер недели. По сути я могу от этого оттолкнуться, только осталось получить значение предыдущей недели... но вот как
9 Gantosha
 
12.03.18
11:53
в скд есть такое слово предыдущий. Но не факт , что вам это поможет, так как если крутить и упорядочивать по разному будет менять результат.
10 varyag
 
12.03.18
12:03
(9) Спасибо щас почитаю про предыдущий
11 varyag
 
19.03.18
08:11
Вспомнил про тему, решил написать решение, мож пригодится кому.. Короче создал пользовательское поле "% изменения суммы продаж" и написал выражение:

Выразить(СтоимостьОборот / ВычислитьВыражение("СтоимостьОборот", "Период", "Группировка", "Предыдущая", "Предыдущая") * 100, "Число(15,0)")

Всем спасибо, кто откликнулся
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший