Имя: Пароль:
1C
 
Получить данные за 3 месяца и 2 недели
🠗 (Волшебник 01.04.2025 09:32)
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"
1 PR
 
01.04.25
09:32
Как мне развидеть этот ужас?
Что мешало сделать одну таблицу, нахрена пять?
И почему левое соединение, а не объединение
Что ты вообще хочешь, чудовище? :))
2 Волшебник
 
01.04.25
09:32
Это же Вам задача! Вот Вы и делайте!
3 PR
 
01.04.25
09:33
(2) А потом эти люди показывают дипломы о прохождении VIP-курсов и требуют зарплаты в полляма
4 Волшебник
 
01.04.25
09:56
(3) Мерзавцы!
5 Мультук
 
гуру
01.04.25
10:15
(0)

Бот же. Кик его.
6 pythel
 
01.04.25
10:16
Ничего не требую) Не работаю программистом и никогда не собираюсь), просто пока учусь в институте прохожу несколько курсов "для себя", поэтому просто интересно как это можно сделать одной таблицей и вывести нужные данные
7 Волшебник
 
01.04.25
10:28
(6) Пошёл ты нахрен!
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
Ошибка? Это не ошибка, это системная функция.