0
pythel
01.04.25
✎
09:29
|
Добрый день! Попалась на курсе задача: вывести данные по 3 прошлым месяца от даты, указанной в параметре и 2 прошлым неделям.
Подскажите пожалуйста как правильно это сделать? В запросе использовать "ДобавитьКДате", или программно устанавливать значение даты каждого параметра? (Месяц1, месяц2 и т.п.). или есть способ красивее и проще? Вот запрос:
|ВЫБРАТЬ
| ПродажиОбороты.Период КАК Период,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК Месяц1
|ПОМЕСТИТЬ ВТ1
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК ПродажиОбороты
|ГДЕ
| МЕСЯЦ(ПродажиОбороты.Период) = МЕСЯЦ(&Месяц1)
| И ПродажиОбороты.ДокументПродажи.Контрагент = &Контрагент
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиОбороты.Период КАК Период,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК Месяц2
|ПОМЕСТИТЬ ВТ2
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК ПродажиОбороты
|ГДЕ
| МЕСЯЦ(ПродажиОбороты.Период) = МЕСЯЦ(&Месяц2)
| И ПродажиОбороты.ДокументПродажи.Контрагент = &Контрагент
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиОбороты.Период КАК Период,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК Месяц3
|ПОМЕСТИТЬ ВТ3
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК ПродажиОбороты
|ГДЕ
| МЕСЯЦ(ПродажиОбороты.Период) = МЕСЯЦ(&Месяц3)
| И ПродажиОбороты.ДокументПродажи.Контрагент = &Контрагент
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиОбороты.Период КАК Период,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК Неделя1
|ПОМЕСТИТЬ ВТНеделя1
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , Неделя, ) КАК ПродажиОбороты
|ГДЕ
| НЕДЕЛЯ(ПродажиОбороты.Период) = НЕДЕЛЯ(&Неделя1)
| И ПродажиОбороты.ДокументПродажи.Контрагент = &Контрагент
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиОбороты.Период КАК Период,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК Неделя2
|ПОМЕСТИТЬ ВТНеделя2
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , Неделя, ) КАК ПродажиОбороты
|ГДЕ
| НЕДЕЛЯ(ПродажиОбороты.Период) = НЕДЕЛЯ(&Неделя2)
| И ПродажиОбороты.ДокументПродажи.Контрагент = &Контрагент
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ВТ1.Месяц1) КАК Месяц1,
| СУММА(ВТ2.Месяц2) КАК Месяц2,
| СУММА(ВТ3.Месяц3) КАК Месяц3,
| ВТНеделя1.Неделя1 КАК Неделя1,
| ВТНеделя2.Неделя2 КАК Неделя2
|ИЗ
| ВТ2 КАК ВТ2,
| ВТ1 КАК ВТ1,
| ВТ3 КАК ВТ3,
| ВТНеделя1 КАК ВТНеделя1,
| ВТНеделя2 КАК ВТНеделя2
|
|СГРУППИРОВАТЬ ПО
| ВТНеделя1.Неделя1,
| ВТНеделя2.Неделя2"
|
|
8
Мультук
гуру
01.04.25
✎
10:29
|
Сарказм
Эх. Такое нужно не в тествой базе запускать, а в продакшене.
Да и отбор по контрагенту в самом начале ограничивает выборку и "портит всю малину"
|ВЫБРАТЬ
| СУММА(ВТ1.Месяц1) КАК Месяц1,
| СУММА(ВТ2.Месяц2) КАК Месяц2,
| СУММА(ВТ3.Месяц3) КАК Месяц3,
| ВТНеделя1.Неделя1 КАК Неделя1,
| ВТНеделя2.Неделя2 КАК Неделя2
|ИЗ
| ВТ2 КАК ВТ2,
| ВТ1 КАК ВТ1,
| ВТ3 КАК ВТ3,
| ВТНеделя1 КАК ВТНеделя1,
| ВТНеделя2 КАК ВТНеделя2
|
|СГРУППИРОВАТЬ ПО
| ВТНеделя1.Неделя1,
| ВТНеделя2.Неделя2
|
|