Имя: Пароль:
1C
 
Почему так не работает в запросе? Пишет неверные параметы Дата-время?
0 Гений 1С
 
гуру
06.02.23
16:11
ПО ТПодсчеты.Дата МЕЖДУ
ДАТАВРЕМЯ(ГОД(&НачалоДня), МЕСЯЦ(&НачалоДня), ДЕНЬ(&НачалоДня), ЧАС(Т.ВремяНачала), МИНУТА(Т.ВремяНачала), СЕКУНДА(Т.ВремяНачала))
И ДАТАВРЕМЯ(ГОД(&НачалоДня), МЕСЯЦ(&НачалоДня), ДЕНЬ(&НачалоДня), ЧАС(Т.ВремяОкончания), МИНУТА(Т.ВремяОкончания), СЕКУНДА(Т.ВремяОкончания))
1 Kassern
 
06.02.23
16:12
(0) Гениально!
2 Garykom
 
гуру
06.02.23
16:14
(0) ыыы
3 Kassern
 
06.02.23
16:15
Дайте угадаю, наверное вы неправильные параметры суете в конструкцию ДатаВремя?)
4 Mort
 
06.02.23
16:16
То что ДАТАВРЕМЯ не функция, а литерал разве что на заборах не пишут.
5 Kassern
 
06.02.23
16:19
Предлагаю вам гениальное решение))
ДОБАВИТЬКДАТЕ(&НачалоДня, СЕКУНДА, РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1), &Время, СЕКУНДА)) - Как дата с временем)
6 Garykom
 
гуру
06.02.23
16:19
(0) Два условия сделай
МЕЖДУ НачалоПериода(&НачалоДня, День) И КонецПериода(&НачалоДня, День)
и второе на время
7 Mort
 
06.02.23
16:21
Но гениальность в (0) необходимо развить:

.... МЕЖДУ

ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД,  ГОД(&НачалоДня)), МЕСЯЦ,  МЕСЯЦ(&НачалоДня))... и т.д.
8 RomanYS
 
06.02.23
16:22
(5) Не, гениально будет текст запроса кодом изменять)))
9 Kassern
 
06.02.23
16:25
(8) Не, ну а что? Работать же будет))
ПО ТПодсчеты.Дата МЕЖДУ
ДОБАВИТЬКДАТЕ(&НачалоДня, СЕКУНДА, РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1), Т.ВремяНачала, СЕКУНДА))
И ДОБАВИТЬКДАТЕ(&НачалоДня, СЕКУНДА, РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1),Т.ВремяОкончания, СЕКУНДА))
10 Гений 1С
 
гуру
06.02.23
16:58
(5) я так и переписал в итоге: https://geniy1s.ru/manipulyaczii-so-vremenem/
11 Гений 1С
 
гуру
06.02.23
16:59
(8) не получится, там нужно от другой таблицы считать время, если ДатаВремя - это литерал, не сработает.
12 magicSan
 
06.02.23
19:26
(10) какой ужас, он ещё и сайты делает.
13 Сергиус
 
06.02.23
20:34
(0)А чего бы просто две даты не передавать на начало и конец дня?
14 Гений 1С
 
гуру
06.02.23
21:04
(13) потому что там интервалов много, в регистре сидят
15 Said_We
 
07.02.23
13:17
(14) Тогда параметры вообще не нужны, если у вас уже есть готовые даты в регистре.
16 Гений 1С
 
гуру
07.02.23
15:25
(15) ну текущий момент времени однозначно надо передать.
17 magicSan
 
07.02.23
15:30
(16) "&ТекущееВремя МЕЖДУ Т.ВремяНачала И Т.ВремяОкончания" вот из этого ты такое нагородил - зачем?

у тебя же банально проверка на нахождение в регистре записи
18 Гений 1С
 
гуру
07.02.23
15:33
(17) мне нужно проверять только те интервалы, которые входят в текущее время
19 Конструктор1С
 
07.02.23
15:53
(0) очередное хениальное дно
20 magicSan
 
08.02.23
07:02
(18) во первых интервалы не входят во время во вторых

"В регистре _ИнтервалыПодсчетаКассы хранится время начала и окончания, когда надо подсчитывать кассу.

В регистре _ПодсчетыКассы хранятся отметки о подсчете кассы.

Нужно в запросе понимать, нужно ли в текущий момент напоминать пользователю о том, что кассу нужно посчитать. Если интервал открыт, то нужно, но если в этот интервал пользователь уже посчитал кассу, не нужно"

зачем первый регистр вообще нужен?
21 НафНаф
 
08.02.23
07:58
Если бы автор спроектировал регистры так, чтобы в них хранилось число секунд от начала даты, то проблем было бы меньше. Такой вот архитектор.
Кстати, в 1С нет вычисляемых свойств объектов, что говорит том, что 1С вынуждает либо дублировать код, либо хранить эти вычисляемые данные.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший