|
Запрос: отбор документов по времени | ☑ | ||
---|---|---|---|---|
0
Gemini
26.09.18
✎
16:21
|
Задача: если передаваемая в запрос дата находится в диапазоне от 8.30 до 20.30, тогда выбрать все документы с этой датой и в со временем от 8.30 до 20.30. Если время от 20.30 до 08.30 - соответственно документы с этой датой и в этом диапазоне. Как реализовать это в Запросе?
|
|||
1
s03
26.09.18
✎
16:22
|
параметры НачалоПериода и КонецПериода и заполняй их по твоему условию
|
|||
2
Gemini
26.09.18
✎
16:23
|
Это в этом виде? С помощью конструкции ВЫБОР и сравнивая входит ли в диапазон ЧАСА и МИНУТ
ВЫБОР КОГДА ЧАС(&Дата) >8 И ЧАС(&Дата) < 21 ТОГДА ВЫБОР КОГДА ЧАС(ОтчетПроизводстваЗаСмену.Дата) > 8 И (ОтчетПроизводстваЗаСмену.Дата)<21 ТОГДА ОтчетПроизводстваЗаСмену.Ссылка КОНЕЦ КОНЕЦ |
|||
3
Gemini
26.09.18
✎
17:21
|
Можно конечно в коде поставить условие и передавать в запрос уже готовый период со временем. Но хотелось бы все в запросе попробовать сделать
|
|||
4
FIXXXL
26.09.18
✎
17:29
|
(2) РазностьДат() между переданной и НачалоПериода(ПереданнаяДата)?
|
|||
5
Gemini
26.09.18
✎
17:48
|
Что то вроде этого сделать, но в условии запроса, тут же не как с числами, тут и по минутам условие отдельно нужно писать
Если ЧАС(&Дата) => 8.30 И ЧАС(&Дата) <= 20.30 Тогда ЧАС(ДатаДокумента) МЕЖДУ 8.30 И 20.30 ИначеЕсли ЧАС(&Дата) >20.30 И ЧАС(&Дата) >24.00 Тогда ЧАС(ДатаДокумента) МЕЖДУ 20.30 И 24.00 И ЧАС(ДатаДокумента) МЕЖДУ 00.00 И 08.30 ИначеЕсли ЧАС(&Дата) >00.00 И ЧАС(&Дата) >08.30 Тогда ЧАС(ДатаДокумента) МЕЖДУ 20.30 И 24.00 И ЧАС(ДатаДокумента) МЕЖДУ 00.00 И 08.30 КонецЕсли |
|||
6
yavasya
26.09.18
✎
17:53
|
(0) что за херню ты несешь . . .
|
|||
7
Gemini
26.09.18
✎
17:56
|
(6) сам ты херня, понятно что это не чистый код, это просто алгоритм своими словами а не код 1С. От того какими словами я напишу цикл или переменные - смысл алгоритма не поменяется, или ты только на 1С умеешь кодить?!
|
|||
8
HardBall
26.09.18
✎
18:09
|
время от 20.30 до 08.30 это разные дни?
|
|||
9
Gemini
26.09.18
✎
18:14
|
(8) нет, день один. Просто одни документы в диапазоне от 00.00 до 8.30 И плюс 20.30 и до 00.00 это ночная смена, а дневная от 8.30 до 20.30. Знаю муторно, но уже до меня придумали. Хотя доков от 00.00 до 8.30 почти не бывает, можно и убрать этот диапазон
|
|||
10
Gemini
26.09.18
✎
18:17
|
Вернее по логике и не может быть, спасибо)) сразу не сообразила
|
|||
11
Вафель
26.09.18
✎
18:20
|
именно в запросе? это тестовое задание?
|
|||
12
Вафель
26.09.18
✎
18:20
|
иначе проще вычислить кодом датанач и датакон и уже их передавать
|
|||
13
Gemini
26.09.18
✎
18:24
|
(11) я тоже думаю проще вычислить кодом - я знаю как это сделать, но думала может грамотнее попробовать в запросе все это реализовать. Или прописывать сложное условие не очень грамотно?
|
|||
14
Gemini
26.09.18
✎
18:40
|
Как-то так, только с минутами не стала заморачиваться
ОтчетПроизводстваЗаСмену.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ВыбДата, ДЕНЬ) И КОНЕЦПЕРИОДА(&ВыбДата, ДЕНЬ) И ВЫБОР КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ОтчетПроизводстваЗаСмену.Дата, ДЕНЬ), &ВыбДата, ЧАС) > 8 И РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ОтчетПроизводстваЗаСмену.Дата, ДЕНЬ), &ВыбДата, ЧАС) < 21 ТОГДА ЧАС(ОтчетПроизводстваЗаСмену.Дата) >= 8 И ЧАС(ОтчетПроизводстваЗаСмену.Дата) < 20 ИНАЧЕ ЧАС(ОтчетПроизводстваЗаСмену.Дата) >= 20 И ЧАС(ОтчетПроизводстваЗаСмену.Дата) < 24 КОНЕЦ |
|||
15
Gemini
26.09.18
✎
18:46
|
и РАЗНОСТЬДАТ тут излишняя
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |