Имя: Пароль:
1C
1С v8
Диаграмма - средние и фактические продажи за период.
0 abda123
 
23.11.15
13:05
СКД - задача: Разработать отчет-диаграмму типа график. Где одна линия должна показывать фактические продажи за указанный период, а вторая линия средние продажи за этот период. Должна быть реализована возможность в точках диаграммы группировать по стандартным периодам (год, квартал, месяц, день), а также должен быть реализован универсальный отбор по контрагентам.
Вот такой запрос на%%%вертил. Прошу критики.

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) КАК ПоДням,
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК ПоМесяцам,
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, КВАРТАЛ) КАК ПоКварталам,
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ГОД) КАК ПоГодам
ПОМЕСТИТЬ Даты
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ),
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ),
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, КВАРТАЛ),
    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ГОД)
;

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

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(Готовая.Стоимость) КАК Стоимость,
    Готовая.ПериодДень,
    Готовая.ПериодМесяц,
    Готовая.ПериодКвартал,
    Готовая.ПериодГод,
    Готовая.Серия
ПОМЕСТИТЬ Готовая2
ИЗ
    Готовая КАК Готовая

СГРУППИРОВАТЬ ПО
    Готовая.ПериодДень,
    Готовая.ПериодМесяц,
    Готовая.ПериодКвартал,
    Готовая.ПериодГод,
    Готовая.Серия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Готовая2.Стоимость,
    Готовая2.ПериодДень КАК ПоДням,
    Готовая2.ПериодМесяц КАК ПоМесяцам,
    Готовая2.ПериодКвартал КАК ПоКварталам,
    Готовая2.ПериодГод КАК ПоГодам,
    Готовая2.Серия КАК Серия
ПОМЕСТИТЬ ГотоваяБезДат
ИЗ
    Готовая2 КАК Готовая2
ГДЕ
    Готовая2.Серия = "Фактические продажи за период"

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ГотоваяБезДат.Стоимость КАК Стоимость,
    ГотоваяБезДат.ПоДням,
    ГотоваяБезДат.ПоМесяцам,
    ГотоваяБезДат.ПоКварталам,
    ГотоваяБезДат.ПоГодам,
    ГотоваяБезДат.Серия
ИЗ
    ГотоваяБезДат КАК ГотоваяБезДат
ГДЕ
    ГотоваяБезДат.Серия = "Фактические продажи за период"

ОБЪЕДИНИТЬ ВСЕ

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

СГРУППИРОВАТЬ ПО
    Даты.ПоДням,
    Даты.ПоКварталам,
    Даты.ПоМесяцам,
    Даты.ПоГодам,
    ГотоваяБезДат.Серия