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


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

Сравнение даты и времени

Сравнение даты и времени
Я
   Novicadmin
 
04.01.13 - 11:24
Ребята не нашел необходимого ответа, парюсь.
Есть на форме реквизит тип дата отображение время без даты.
Так вот как выбрать строки из интервала 12.12.2012 23:00:00 по 13.12.2012 8:00:00 в каждой строке есть полная дата со временем, а интервал времени указываем на форме с 23:00:00 до 8:00:00. пытался сравнивать строки через ФОрмат(дата,"ДЛФ=В"), че то хрень какая то получается. давайте придумаем способ или если есть поделитесь пожалуйста. может есть варики запросом сравнить в таблице в которой в каждой строке есть полная дата+время. спасибо.
 
 
   БледноЗолотистый
 
1 - 04.01.13 - 11:36
Откуда взяли именно этот день 12.12.2012?
   Novicadmin
 
2 - 04.01.13 - 12:09
этот день для примера, а вообще это в документе в каждой строке есть полная дата+время
   hhhh
 
3 - 04.01.13 - 12:16
(2) ну как-то НачалоДня(Строка.Дата) + (НачДата - ПустаяДата)

получаете начало интервала, но уже в рамках 12.12.12.
Дальше уже элементарное сравнение.
   Novicadmin
 
4 - 04.01.13 - 12:37
мне нужна выборка во времени а не в датах создать условие при ктором будет выборка проходить в интервали времени т.е. ГЛАВНОЕ это сравниь время
   Novicadmin
 
5 - 04.01.13 - 12:56
представьте что на форме есть 2 поля с типом дата, вариант отображения Время(если визуально то с 23:00:00 до 8:00:00) т.е. пользователь может ввести туда только время без даты. нам необходимо выбрать в документе строки в которых в колонке Время выбираемое значение будет в интервале от 12.12.2012 23:00:00 до 13.12.2012 8:00:00 (значения в документе это как полная дата+время может иметь любое значение к примеру первая строка в документе это 12.12.2012 8:00:45, а последняя строка это 13.12.2012 7:45:32). вот нам и надо получить строки сравнивая дату в строке со временем указанным на форме. че тоя много написал но думаю доходчево.
   Novicadmin
 
6 - 04.01.13 - 13:02
как пример сравнения в виде кода это будет так:
Пока какаятовыборка цикл
Если (какаятовыборка.вермя >= Время1) и (какаятовыборка.вермя <= Время2) тогда
.............
...........
КонецЕсли;
КонецЦикла;

но это не имеет смысла потому что через отладчик мы видим такую вот картину как

Если 12.12.2012 8:45:32 >= 01.01.0001 23:00:00 и т.д. )))
   Novicadmin
 
7 - 04.01.13 - 13:06
в результате надо сравнить только время т.е. 8:45:32 и 23:00:00, но я не представляю как (
   Lama12
 
8 - 04.01.13 - 13:09
(7) Так все написал в (6). Только добавь условие на дату и все. Если правильно понял, сравнение времени должно идти в пределах одного дня?
Если нет, то отнимай от даты начало дня.
Время приведи к количеству секунд. Все.
   Novicadmin
 
9 - 04.01.13 - 15:13
дык я и не понимаю как, слабенько 8ку знаю, вот и парюсь мне бы конкретный пример чтобы я понял и запомнил
   Novicadmin
 
10 - 04.01.13 - 15:16
Если  (ВремяСтроки >= (НачалоДня(ВремяСтроки)) И ВремяСтроки <= (НачалоДня(ВремяСтроки)+60*60*8 )) или (ВремяСтроки >= НачалоДня(ВремяСтроки)+60*60*23 И ВремяСтроки <= (НачалоДня(ВремяСтроки)+60*60*24))Тогда
                СтрокаТЗ= ТЗ.Добавить();
                
                СтрокаТЗ.Товар = Товар;
                СтрокаТЗ.КолВо = КолВо;
                СтрокаТЗ.Сумма = Сумма;
                Если найти(Товар,СокрЛП(ЕстьСтрока))>0 или найти(Товар,СокрЛП(ЕстьСтрока2))>0 или найти(Товар,СокрЛП(ЕстьСтрока3))>0 тогда
                СтрокаТЗ.Алко = "1";
                иначе
                СтрокаТЗ.Алко = "0";
                КонецЕсли;
            КонецЕсли;
 
 Рекламное место пустует
   Novicadmin
 
11 - 04.01.13 - 15:16
вот так работает
но это кодом, а мне надо чтобы значения были с формы
   GROOVY
 
12 - 04.01.13 - 15:19
(11) Вот эта фраза меня в ступор ввела...
   Novicadmin
 
13 - 04.01.13 - 15:21
может я неправильно изъясняюсь х.з ) я просто больше чем уверен что можно как то преобразавать значения переменных во время и сравнивать только время, но х.з как это сделать
   GROOVY
 
14 - 04.01.13 - 15:22
(13) Такого типа как "Время" нет. Можно, как уже сказали выше, получить кол секунд с начала дня для обеих значений и сравнивать их.
   Novicadmin
 
15 - 04.01.13 - 15:24
как это сделать нарисуй, покажи пример плиз
   1Сергей
 
16 - 04.01.13 - 15:26
(15) купи у меня СП? недорого отдам
   GROOVY
 
17 - 04.01.13 - 15:27
Время1 = Дата1 - НачалоДня(Дата1);
Время2 = Дата2 - НачалоДня(Дата2);
   ДенисЧ
 
18 - 04.01.13 - 15:31
(14) Как нет? А дата с параметром ЧастиДаты.Время?
   GROOVY
 
19 - 04.01.13 - 15:34
(18) Это дата. Вида 01.01.0001 13:00:00 к примеру.
   Xatori
 
20 - 04.01.13 - 16:34
Может действительно стоит приводить все даты к 01.01.0001 и сравнивать только время
   GROOVY
 
21 - 04.01.13 - 17:02
(20) А смысл? К числу то проще. Да и сравнение дат по факту это и есть сравнение числа секунд от даты Х.
   Novicadmin
 
22 - 09.01.13 - 15:21
Функция ВозвратВремениНачала(Дата)
    
   //время на форме
 
    нужнаяДата1 = ФОрмат(Дата, "ДЛФ=T");
   //дата из строки
 
    НужнаяДата2 = Формат(ВремяСтроки,"ДЛФ=D");
    ИтоговаяДата = НужнаяДата2+" "+нужнаяДата1;
    ИтоговаяДата = Дата(ИтоговаяДата);
    
    Возврат ИтоговаяДата;
    
    
КонецФункции

две функции для возврата даты, просто приравниваю дату времени к дате строки, но в итоге тогда нельзя сравнить разные даты т.е. нельзя выбрать в интервале  с 23:00:00 одного одня до 8:00:00 другого дня, как??? может есть мысли?


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