Как сложить два числа как даты? #356686


#0 by yurikmurmansk
Ситуация такая. Необходимо в запросе представить два числа как время и получить их сумму. Конфигурация: Управление автотранспортом. Пример: Есть водитель? который за день отправился в три точки, в первой он был 1,3(Один час тридцать минут), во второй 0,4(Сорок минут) в третей 0,55(55 минут), в итоге он отработал 3,05(Три часа пять минут). Конструктор выходной формы в итогах показывает 2,25(т.е. десятичную сумму). Как построить запрос?
#1 by Если
считай в минутах. умножай часы на 60. Чего велосипеды изобретать?
#2 by DarkAn
#3 by yurikmurmansk
Спасибо конечно. Но основная сложность в том чтобы выбрать Именно Запросом. Математика конечно хорошо и есть проще формулы которые работают. Используется конструктор выходной формы, а его интересует только правильно поставленный запрос, а не математика.
#4 by kosts
Считай в целых часах. 0.5 это 30 минут 0.75 это 45 минут Переводить в часы минуты только при выводе пользователю.
#5 by ShoGUN
Нафига? Хранить надо в минутах, а в часы переводить только при выводе в отчет.
#6 by yurikmurmansk
Это понятно. Функции то какие использовать Цел нельзя, это же запрос.
#7 by ShoGUN
Переведи 32 минуты в доли часа. :) Использовать десятичный разделитель в числе для хранения времени - совсем не айс. Советую больше думать при проектировании.
#8 by Ujcnm99
А если использовать в запросе свою функцию? Что такое конструктор выходной формы?
#9 by kosts
Это что так принято в поставочной конфигурации 0.55 - 55 минут? Или сами так решили делать?
#10 by yurikmurmansk
Это решение Раруса создавать реквизиты времени числом(15,2).
#11 by yurikmurmansk
А как свою вставить в запрос? Это бы решило проблему.
#12 by kosts
Я с минутами не работал. Приведенный способ привел из крупной системы (называющей себя ERP). Подумав, для себя бы выбрал способ хранения в целых минутах.
#13 by kosts
V7 позволяет использовать свои функции. Просто напиши в модуле свою процедуру и используй ее в запросе. Должно работать...
#14 by yurikmurmansk
А V8?
#15 by Maxus43
покури функции работы с датами в запросе, может подойдёт
#16 by kosts
В V8 нельзя
#17 by yurikmurmansk
Самая проблема в преобразовании числа в дату в запросе. А функция РАЗНОСТЬДАТ специально для этого и существует.
#18 by НЕА123
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КоличествоМинут)
#19 by YauheniL
Только она платформу вешает, если одна из дат не определена
#20 by yurikmurmansk
А как целую часть в запросе выделить? Через выразить как число(15,0) округляет дробную.
#21 by НЕА123
&твоечисло-0.5
#22 by YauheniL
ВЫРАЗИТЬ( &ТвоеЧисло - 0.5 КАК Число(15, 0))
#23 by Rebelx
чем не устраивает РазностьДат и ДобавитьКДате? или храни дату как все системы - число секунд с начала какого - либо периода. Лучше взять конечно за начало отсчета ту дату которую использует 1С. В этом случае можно работать с такими числами как с датами, без всяких умножений. и процесс преобразования даты в число и числа в дату будет очень прост.
#24 by luns
Можно на компоновке делать ... там можно использовать функции общих модулей (это если 8.1)
#25 by yurikmurmansk
Спасибо всем за участие. Итоги все же не возможно отформатировать. Решил выдергивать Результат из построителя и с ним работать. Циклом преобразовал в нужные значения. Только не понятно как теперь Таблицу значений подсунуть построителю как результат, ведь ПостроительОтчета.Результат (ТолькоЧтение)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям