|
Как в запросе корректно добавить к дате день недели даты из параметра? | ☑ | ||
---|---|---|---|---|
0
megabax
27.07.17
✎
08:37
|
Добрый день. Пытаюсь в запросе добавить к дате день недели из параметра, например, как-то так:
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(&ДатаОтчета, МЕСЯЦ, -1), ДЕНЬ, ДЕНЬНЕДЕЛИ(&ДатаОтчета)) и говорит "Неверные параметры". Вот полный текст запроса: ВЫБРАТЬ РАЗРЕШЕННЫЕ ПродажиОбороты.Магазин КАК Магазин, СУММА(ПродажиОбороты.СтоимостьОборот) КАК TotalLastMonth_RUB, СУММА(ПродажиОбороты.КоличествоОборот) КАК TotalLastMonth_PCS ИЗ РегистрНакопления.Продажи.Обороты(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОтчета, МЕСЯЦ, -1), НЕДЕЛЯ), ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(&ДатаОтчета, МЕСЯЦ, -1), ДЕНЬ, ДЕНЬНЕДЕЛИ(&ДатаОтчета)), День, ) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Магазин |
|||
1
megabax
27.07.17
✎
08:37
|
Подскажите, пожалуйста, как лечить?
|
|||
2
Рэйв
27.07.17
✎
08:41
|
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(&ДатаОтчета, МЕСЯЦ, -1), ДЕНЬ,&ПараметрДень)
|
|||
3
Рэйв
27.07.17
✎
08:42
|
Сразу в параметр передавай день недели
|
|||
4
1dvd
27.07.17
✎
08:54
|
>>обавить к дате день недели из параметра
К девятому мая прибавить среду? |
|||
5
megabax
27.07.17
✎
09:01
|
(3) спасибо, попробую.
(4) Не среду, а номер дня недели (среда - третий день). То есть, тут надо взять ту же саму неделю, но с прошлого месяца. При чем, если неделя не полная, то это надо учесть. |
|||
6
1dvd
27.07.17
✎
09:03
|
(5) что такое неполная неделя?
|
|||
7
1dvd
27.07.17
✎
09:03
|
а... кажется дошло
|
|||
8
1dvd
27.07.17
✎
09:04
|
Если 1-ое число месяца выпадает на воскресенье, то со 2-го уже считается вторая неделя?
|
|||
9
1dvd
27.07.17
✎
09:05
|
Задачка интересная на самом деле
|
|||
10
megabax
27.07.17
✎
09:23
|
(9) Нет, не совсем так. Мы смотрим отчет в среду, значит, текущая недель - с понедельника по среду, и нам надо сравнить три дня этой недели с тремя днями недели прошлого месяца. Если смотрим в воскресенье - неделя прошла и сравниваем уже все семь дней.
|
|||
11
FIXXXL
27.07.17
✎
09:26
|
(10) в новый год и первомай как смотрим?
|
|||
12
1dvd
27.07.17
✎
09:33
|
вот, наваял. Может поможет
ВЫБРАТЬ НЕДЕЛЯ(&парДата) - НЕДЕЛЯ(НАЧАЛОПЕРИОДА(&парДата, МЕСЯЦ)) + 1 КАК НомерНедели, НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&парДата, МЕСЯЦ, -1), МЕСЯЦ) КАК НачалоПрошлогоМесяца, ДОБАВИТЬКДАТЕ( НАЧАЛОПЕРИОДА( ДОБАВИТЬКДАТЕ( НАЧАЛОПЕРИОДА( ДОБАВИТЬКДАТЕ(&парДата, МЕСЯЦ, -1), МЕСЯЦ), НЕДЕЛЯ, НЕДЕЛЯ(&парДата) - НЕДЕЛЯ(НАЧАЛОПЕРИОДА(&парДата, МЕСЯЦ)) ), НЕДЕЛЯ ), ДЕНЬ, ДЕНЬНЕДЕЛИ(&парДата) - 1) КАК Результат Находит ту же по счету неделю и тот же день недели, что &парДата, только в прошлом месяца ЗЫ пока без учёта неполных недель |
|||
13
megabax
27.07.17
✎
10:18
|
(11) так же
|
|||
14
megabax
27.07.17
✎
10:22
|
(12) спасибо :) я уже решил проблему через параметр, хотя пришлось с СКД полюбиться немного....
Если кому интересно, то вот решение: НастройкиОтчета = КомпоновщикНастроек.Настройки; ДатаОтчета=Неопределено; Для Каждого стр Из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы цикл Если стр.Параметр=Новый ПараметрКомпоновкиДанных("ДатаОтчета") Тогда ДатаОтчета=стр.Значение; КонецЕсли КонецЦикла; Если ДатаОтчета=Неопределено Тогда сообщить("Не найден параметр ДатаОтчета"); Иначе НастройкиОтчета.ПараметрыДанных.УстановитьЗначениеПараметра("ДеньНедели", ДеньНедели(ДатаОтчета)); КонецЕсли; и в запросе ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОтчета, МЕСЯЦ, -1), НЕДЕЛЯ), ДЕНЬ, &ДеньНедели) |
|||
15
megabax
27.07.17
✎
10:30
|
(13) т.е. на признаки вообще не обращаем внимания, но если вдруг окажется, что надо их учитывать, это опа, придется делать производствнный календарь....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |