Имя: Пароль:
1C
1С v8
Расчет времени в запросе
0 brenli
 
24.02.22
12:20
Всем добра
Решаю задачу по запросам - нужно вычислить время в полете для каждого пассажира, для каждого рейса.
Дата отправления хранится в одной таблице БД, время отправления и время прибытие хранится в другой таблице БД.
Формат времени 24 ч.
Вся соль вопроса в том что время может уходить в следующие сутки.
Например ЧасОтправления 12 ч, а время прибытия 2 ч.
Как адекватно вычислять разницу во времени?
Посоветуйте пжл?
У меня есть несколько идей но они какие то очень громоздкие:
1) Описать через условный оператор все возможные варианты когда ЧасОтправления > ЧасПрибытия, ЧасОтправления = 24ч, ЧасОтправления < ЧасПрибытия и т.д. тогда поидее поле дата можно не использовать.
2) К данных поля ДатаОтправления устанавливаем время из другой таблицы путем ДобавитьКДате предварительно извлеченные часы и минуты, и потом путём анализа через условный оператор вычисляем поле ДатаПрибытия со временем,
и используем функцию РАЗНОСТЬДАТ().
Как бы вы стали решать такое?
1 acht
 
24.02.22
13:05
Кому-то было лениво придумывать задачи и он спер их с sql-ex

https://www.sql.ru/forum/1067442/zapros-na-sql-pomogite
2 Жан Пердежон
 
24.02.22
13:06
на sql-ex что ли задачки решаешь?
3 mikecool
 
24.02.22
13:06
а как еще можно решить без РазностьДат()?
4 acht
 
24.02.22
13:06
(2) Не, это по просторам тырнета бродит задачник уже на 1С с цельнотянутыми примерами. Искать лень.
5 brenli
 
24.02.22
13:22
(3) РазностьДат не прокатывает с ходу так как известна только дата отправления. Что будешь толкать в функцию разность дат?
Дата отправления к примеру 01.04.10 22:10, и известно время прибытия 02:15, а это уже следующий день.
6 brenli
 
24.02.22
13:23
(2) На тренажере 1с построенном по мотивам sql-ex
7 patapum
 
24.02.22
13:31
(5) А почему следующий день? А не через день, например? Если точно на следующий день, то можно сделать.
Для начала надо из времени сконструировать дату+время, исходя из того, что это день сегодняшний. Сделать это используя разность дат (например времени с пустой датой), начало периода и добавить к дате, вполне можно. Дальше смотрим разность дат прилета и вылета, если она положительная, берем ее, если отрицательная, то берем разность дат, только к дате прилета добавляем один день. Условия пишем через выбор.
Получится громоздко, но уж как получится.
8 brenli
 
24.02.22
13:41
(7) Описание из схемы БД - рейсы выполняются ежедневно, а длительность полета любого рейса менее суток;
9 brenli
 
24.02.22
13:43
(7) Спасибо
10 НЕА123
 
24.02.22
13:52
Прилет-Отлет+Выбор когда Прилет-Отлет < 0 Тогда 24 Иначе 0 конец