Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Запрос: отбор документов по времени

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует