Имя: Пароль:
1C
1С v8
вывод даты как число
,
0 moonlight
 
07.08.16
00:24
Как вывести значения типа даты например 06.08.2016 23:00:05 в 20160806230005 ? Можно ли это получить встроенными средствами 1с или надо писать свою функцию?
1 Zhuravlik
 
07.08.16
00:26
(0) Курить функцию Формат
2 Aleksey
 
07.08.16
01:30
ДФ=yyyyMMddHHmmss
3 Aleksey
 
07.08.16
01:36
ТвояДата - 06.08.2016 23:00:05;

ДатаКакЧисло = Число("20"+Прав(Год(ТвояДата),2) + Прав("0"+Месяц(ТвояДата,2) + Прав("0"+День(ТвояДата),2) + Прав("0"+Час(ТвояДата),2) + Прав("0"+Минута(ТвояДата),2) + Прав("0"+Секунда(ТвояДата),2));
4 b_ru
 
07.08.16
09:06
(3) Вон из профессии! ©
5 Aleksey
 
07.08.16
09:58
(4) Что не так? Встроенными средствами, без запросов в цикле и перейти.
Какой именной феншуй нарушает этот код?
6 echo77
 
07.08.16
10:19
(5) Вы же сами писали раньше ДФ=yyyyMMddHHmmss

Соответственно:

ДатаКакЧисло = Число(Формат(Дата,"ДФ=yyyyMMddHHmmss"))
7 Vaflya
 
07.08.16
11:23
(4) это ко всем отписавшимся в топике
что за чушь это такая - дата как число, дата это дата, число это число, вертолет тоже не кирпич. Зачем это нужно, могу предположить, что ТС хочет прибавить к дате пару дней или недель, а с датами обращаться не умеет
8 Vaflya
 
07.08.16
11:24
(0) куда вывести?
9 Aleksey
 
07.08.16
12:36
(7) Например для сортировки, или для выгрузки в текстовый файл, где нет формата "дата"
10 Vaflya
 
07.08.16
12:40
(9)
я думал, что дата сортируется не хуже чем число, похоже что это не так.
я думал, что в текстовом файле нет формата "число", похоже что это не так.
Все не так, как я думал.
11 Зая Бусечка
 
07.08.16
12:46
(10) Дата сортируется прекрасно. В текстовом файле вообще нет числа и чего-то подобного. Там только буквы.
12 Aleksey
 
07.08.16
12:49
(11) дата или дата + время? А если нам эту инфу в 7.7 надо передать, где в дате нет времени?
13 Vaflya
 
07.08.16
12:53
(12) да, тогда мы загоним туда число) гм.. лол
14 Aleksey
 
07.08.16
12:53
Например у меня хранилась во внешним dbf файле некие данные. (дата+время изменений) и нужно было запросом выбирать все данные измененные от времени последнего обмена. Самое простое это хранить именно в формате "20160806230005". И тогда запросом по одному полю легко можно получить нужные данные
15 Aleksey
 
07.08.16
12:54
(13) И что?
16 Vaflya
 
07.08.16
13:02
(14) "20160806230005" - это строка что ли?
но даже если это число, то самое простое это написать запрос с отбором по дате, а не городить преобразование в число в дополнительной колонке
17 Vaflya
 
07.08.16
13:07
там в соседней ветке человек решает муки выбора - где ему начать работать во франче или в гос структуре, теперь точно уверен, что идти надо туда, где дадут спокойно добавить новую числовую колонку и писать туда числовой вариант даты, что бы потом "оптимально" запросы делать, затем понять, что это никому не нужно и сделать по-человечески. клиент, с которым у тебя коммерческие отношения, ждать пока ты это все сделаешь не будет
18 Aleksey
 
07.08.16
13:08
(16) а если нужно время? Например обмен идет каждый час и хотелось бы выгружать не всю инфу за день, а именно со временем последнего обмена
19 Aleksey
 
07.08.16
13:09
(17) То что лично тебе в данный момент это не нужно, не означает что и всем это не надо
20 Aleksey
 
07.08.16
13:15
(17) Расскажи как по человечески

Есть некая база куда загружаются данные. Есть клиенты которые выбирают эти данные. Причем количество клиентов заранее не известно.

В моем случае я писал в базу данные и дата+время загрузки данных.
А у клиентов у меня была дата+время последней выгрузки.

Соответственно если клиент последний раз обменивался месяц назад, он получит измененные за месяц данные. Если клиент обменивался полчаса назад - то он получить только измененные за последние полчаса, а не все данные

А теперь расскажи как по человечески, при условии что в базе нет типа Дата+время.
21 Vaflya
 
07.08.16
13:17
топик про восьмерку
время в 7 насколько понимаю есть (с 7 только через скл общался), но наверно хранится в соседней колонке, поставить где дата = и время =, >, <.
22 Aleksey
 
07.08.16
13:20
(21) "Дата = " ты серьезно?
23 Vaflya
 
07.08.16
13:22
а что такое, с синтаксисом не угадал ?
24 Aleksey
 
07.08.16
13:24
Дата последней загрузки 06.08.2016 07:25:45.
Клиент последний раз обменивался 05.08.2016 10:00:00

Мне нужно выбрать Все изменения с даты последнего обмена

Как мне составить запрос на поле дата и времени?
25 Aleksey
 
07.08.16
13:25
Если я напишу
Дата = 05.08.2016 и время > 10:00:00
то сюда не попадут изменения от 06.08.16
26 Aleksey
 
07.08.16
13:27
Если я напишу Дата >= 05.08.2016 и время >= 10:00:00

То сюда не попадут  изменения от 06.08.2016 07:25:45, так как 07:25:45 < 10:00:00
27 Aleksey
 
07.08.16
13:28
Забить на дату? Тогда будет повторно выгружаться данные с 0:00:00 по 10:00:00. А нам этого не нужно, нам нужно именно измененные с последнего обмена, а не все данные за день
28 Aleksey
 
07.08.16
13:28
*Забить на дату? = Забить на время?
29 Web00001
 
07.08.16
13:30
30 Aleksey
 
07.08.16
13:32
В моем случае
Дата последней загрузки 20160806072545
Клиент последний раз обменивался 20160805100000

Соответственно в запросе я выбираю записи > "20160805100000"
(а уж число или дата не принципиально)
И получаю все данные измененные с 05.08.2016 10:00:00, т.е. ровно то что нужно. Останется в дату последнего обмена записать новую дату+время
31 Vaflya
 
07.08.16
13:47
смотря средствами чего грузить, что доступно? convert? сложить два поля, получить дату со временем и сравнивать. в любом случае придумать можно
(29) да да, подкол тоже
32 Aleksey
 
07.08.16
13:56
(31) а в чем прикол хранить 2 поля, каждый раз делать конверт по всей таблице, вместо того чтобы использовать 1 поле с индексом? Это и есть писать по человечески?
33 Vaflya
 
07.08.16
14:47
спорить о том, что происходит в чужой базе не хочется, я почему то подумал, что это документы, у них дата и время есть, в (14) так и написано, что колонки уже есть, если это произвольная таблица и то как записи в ней появляются описываешь сам, то вобще никаких проблем быть не должно, сам написал, сам прочитал. в данном случае число играет роль некоторого счетчика, который получен от текущей даты, что может привести к косякам, если например на машине, на которой формируется этот счетчик, будет стоять неправильное системное время или у клиента что со временем. простой порядковый номер записи. А использовать числа, образованные от даты в качестве именно чисел хз что это. Топик про 8 и в примере дата со времен идет (в моем понимании дата это традиционная дата из платформы 8), каким таким образом мы перешли к решению проблем в твоей семерошной базе тоже не понятно.
34 Vaflya
 
07.08.16
15:07
ну еще дополню по твоему принципу хранения "даты" в виде числа: к дате это никакого отношения не имеет, так ты пытаешься организовать порядковый номер записи, что бы потом можно было поставить "< или >" (ну а так как время остановить невозможно, то в принципе уникальность + стабильное увеличение числового значения будет, за исключением всякого рода неприятностей, про которые в 33 написал). Сделать тоже самое можно десятью способами, самый простой - получить максимальный номер в таблице и прибавить 1
35 DDwe
 
07.08.16
15:29
Если человеку нужно число вместо даты, по каким-то причинам, пусть использует unix-время, это хоть универсальное решение.
36 Vaflya
 
07.08.16
15:41
:)
37 Aleksey
 
07.08.16
15:43
(3) Обмен происходит на одном компьютере, так что на время клиента пофиг
38 Aleksey
 
07.08.16
15:47
(34) Максимальный номер от чего?

(35) В 1С нет команды на получения Unix времени. так что  или писать самому, или пользоваться тем что есть. А если нет разницы, то зачем изобретать велосипед и преобразовывать в unix время, тем более что читаемость сильно падает при таком подходе?
39 Web00001
 
07.08.16
17:05
(38) >>В 1С нет команды на получения Unix времени
Подозреваю, что есть. Вот это собственно оно и будет:
ТекущаяДата() - Дата(1970,1,1)
ну или как то так
40 DDwe
 
07.08.16
17:37
(38) Затем, что хранить в базе правильно именно так, выгружать и обмениваться тоже. А писанины там на час с чаем и печенюшками.

Ну а если выводить и кому то показывать, то да, хотя показывать в таком виде "20160806230005" изврат над коиентом еще тот ))))
41 Aleksey
 
07.08.16
19:34
(40) т.е. 1470598386 намного понятнее чем 20160807193307?
42 Serg_1960
 
07.08.16
23:07
(39) unixtime = Формат(ТекущаяДата() - дата(1970,1,1,1,0,0), "ЧГ=0");
43 DDwe
 
08.08.16
04:03
(41) Нет, но с первым можно работать просто прибавляя и отнимая секунды, сравнивая и пр. А со вторым нет, это просто строка с представлением в смысле работы бесполезная еще и мало читаемая. А первое значение, преобразуй в адекватное представление по окончании работы и все.
44 Aleksey
 
08.08.16
10:29
(4) во втором случае тоже можно прибавлять отнимать и сравнивать
45 Горогуля
 
08.08.16
10:31
товарищ тут хрень спросил, а вы тут развели..
46 DDwe
 
08.08.16
10:32
(44) Ой ли? А если подумать?
20160131235959 + 1  сколько будет?
47 DDwe
 
08.08.16
10:32
(45) Да пофиг на товарища, дело в принципе ))))
48 Горогуля
 
08.08.16
10:32
(46) +1- это точно больше, чем было
49 Горогуля
 
08.08.16
10:33
(47) а я с Алексеем согласен, хоть он и тот ещё.. разговаривать не очем
50 lEvGl
 
гуру
08.08.16
10:38
(49) можно пояснений, в чем согласен? а то папатерялась я (с)
51 CMblCL
 
08.08.16
10:40
(26) Дата >= 05.08.2016 Или Дата = 05.08.2016 И время >= 10:00:00
52 lEvGl
 
гуру
08.08.16
10:40
тема то интересная, но о чем в последних постах говорят и с чем согласен не понятно - нить утеряна
53 Горогуля
 
08.08.16
10:41
(50) датой (в восьмёмошном смысле, со временем) очень удобно пользоваться там, где нет времени в дате. число - и всё
54 Горогуля
 
08.08.16
10:42
+(53) какую-то фигню сказал, но, надеюсь, смысл ясен
55 CMblCL
 
08.08.16
10:42
(26) Дата > 05.08.2016 Или Дата = 05.08.2016 И время >= 10:00:00 *
56 Горогуля
 
08.08.16
10:44
и это.. операции с числами гораздо проще и быстрей, чем со строками. правильно представленная дата как число рулит
57 Serg_1960
 
08.08.16
10:50
(54) Неее... смысл - не ясень, ибо дата с временем в восьмерке - это число секунд от 15.10.1582 04:00 :)
58 lEvGl
 
гуру
08.08.16
10:51
(54) да смысл ясен, но ведь это уже не дата совсем, а число, образованное от даты, за основу можно взять как сказали хоть unix время и это решит проблему, которую решает Алексей. Ему нужна последовательность появления записей в таблице, если правильно понял, что бы потом запросом получить только то, что еще не грузилось куда-то там (номер последней загруженной записи он где то хранит)
59 Горогуля
 
08.08.16
10:51
(57) обоссаться. '20140605"
60 Горогуля
 
08.08.16
10:52
(58) не дата. а ну чо?
61 Serg_1960
 
08.08.16
10:58
(59) Дэк, это начало дня "по умолчанию". "20140605000000"
62 Горогуля
 
08.08.16
11:00
(61) Серг_1960, ходи к началам обсуждения
63 Горогуля
 
08.08.16
11:01
+(62) ну а я ваще не понимаю, чего оне от меня хотят ;)
64 Serg_1960
 
08.08.16
11:06
(62) Да смысла нет ходить. Автору уже был дан ответ. Я стебаюсь, но по теме :)
65 ColonelAp4u
 
08.08.16
11:15
Обсуждение конечно интересное но все же ответ тут (2) и выводит в том формате в котором необходимо ТСу
66 Serg_1960
 
08.08.16
11:18
(63) Не обращай внимание. Они между собой заспорили, что с форматом даты, представленной как число (например, дата 31.01.2016 23:59:59 представлена как 20160131235959), уже нельзя работать как с датой. Т.е операции сложения и вычитания к числу не "работают" по правилам даты. Сложно сказал? А вопрос то, между прочим, прост как две копейки :)
67 Vaflya
 
08.08.16
13:51
(66) ну где то так, дата это дата, число это число
Просто это
(9) "Например для сортировки, или для выгрузки в текстовый файл, где нет формата "дата""
и это
(12)"дата или дата + время? А если нам эту инфу в 7.7 надо передать, где в дате нет времени?"

меня как бы немного смутило, он из даты делает число и говорит, что так удобно передавать дату в дату. Только мне непонятно где там в 7.7 дата то? Просто на основании даты сделали число и все, даты в приемнике как не было так и нет, походу потому что она там и ненужна
68 Aleksey
 
08.08.16
14:05
(67) Никто не передают дату в дату. Очень часто нужны тупо маркеры, которые прямо пропорционально зависимы от даты и времени, т.е. тупо нужно понимание какое событие было раньше, а какое позже другого события. Т.е. в общем случае даже не важна сама дата, важно просто знать больше или меньше
69 Vaflya
 
08.08.16
14:11
(68) ДА!
Независимо от того, куда вы едете — это в гору и против ветра!