Имя: Пароль:
 
1C
1С v8
Сравнение даты и времени
0 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?
2 Novicadmin
 
04.01.13
12:09
этот день для примера, а вообще это в документе в каждой строке есть полная дата+время
3 hhhh
 
04.01.13
12:16
(2) ну как-то НачалоДня(Строка.Дата) + (НачДата - ПустаяДата)

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

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

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

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