Вывод времени (часы минуты) в СКД

1. user833844 05.10.21 21:38 Сейчас в теме
Добрый день!
Помогите справится с ситуацией. На форму вводится время работы ТС и простой, тип число. (н-р время работы 11 часов, просто 2,50 - что равно 2 часа, 50 мин) , в печатной форме нужно вывести разницу времени, т.е 11 - 2.5 =8 ч 10 мин. Есть запрос в нем сделано так:
ВЫБРАТЬ
	|	ПутевойЛист.Номер,
	|	ПутевойЛист.ДатаВыписки КАК ДатаВыписки,
	|	ПутевойЛист.Водитель1 КАК Водитель,
	|	СУММА(ПутевойЛистРасходГСМ.Выдано) КАК Выдано,
	|	СУММА(ПутевойЛистРасходГСМ.РасходПоНорме) КАК РасходПоНорме,
	|	СУММА(ПутевойЛистРасходГСМ.РасходПоФакту) КАК РасходПоФакту,
	|	ПутевойЛистРасходГСМ.ОстатокПриВыезде КАК ОстатокПриВыезде,
	|	ПутевойЛистРасходГСМ.ОстатокПриВозвращении КАК ОстатокПриВозвращении,
	|	ВЫБОР
	|		КОГДА ПутевойЛистРасходГСМ.НомерСтроки = 1
	|			ТОГДА 1
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК Дни,
	|	ВЫБОР
	|		КОГДА ПутевойЛистРасходГСМ.НомерСтроки = 1
	|			ТОГДА СУММА (ПутевойЛистВыработкаТСВремяВНаряде.Количество)/3600 
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК ВремяВНаряде,
	|	ВЫБОР
	|		КОГДА ПутевойЛистРасходГСМ.НомерСтроки = 1
	|			ТОГДА СУММА (ПутевойЛистВыработкаТСВремяВПростое.Количество)/3600
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК ВремяВПростое,
	|	ВЫБОР
	|		КОГДА ПутевойЛистРасходГСМ.НомерСтроки = 1
	|			ТОГДА СУММА(ПутевойЛистВыработкаТСВремяВНаряде.Количество - ПутевойЛистВыработкаТСВремяВПростое.Количество)/3600
	|		ИНАЧЕ 0
Показать



то есть например время простоя 2 ч 50 мин.считает 2*3600+50*60=10200 10200/3600=2.83 (это выводится на форму), а нужно 2.50
как правильно вывести на форму время и далее разность времен?
По теме из базы знаний
Найденные решения
15. user833844 19.10.21 20:51 Сейчас в теме
(14) все я разобралась))

(СУММА(ВремяВПростоеВСек) / 3600 - (ВЫРАЗИТЬ(СУММА(ВремяВПростоеВСек) / 3600 - 0.49 КАК ЧИСЛО(15, 0)))) * 0.6 + (ВЫРАЗИТЬ(СУММА(ВремяВПростоеВСек) / 3600 - 0.49 КАК ЧИСЛО(15, 0)))

Большое спасибо!)
3. puzo50 06.10.21 07:02 Сейчас в теме
ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете целую часть числа
поле - ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете дробную часть числа
и переводите её в минуты. то есть х/100 = у/60. задача - найти у.
ну и добавляете к целой части числа, коли надо
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. DBV 06.10.21 08:37 Сейчас в теме
(1) я так понимаю, что "ПутевойЛистВыработкаТСВремяВНаряде.Количество" и "ПутевойЛистВыработкаТСВремяВПростое.Количество" это в секундах. Если да, то можно их не делить на 3600, а оставить в секундах, а потом добавить к пустой дате (Тем более при делении теряется секунда)

При выводе в печать добавить формат вывода типа ДФ='Ч "ч" мм "мин"'

ОбластьСтрока.Параметры.ВремяФакт = Формат(Дата('00010101') + 2.83*3600, "ДФ='Ч ""ч"" мм ""мин""'");
// На вывод пойдет "2 ч 49 мин"
// как видно нет одной секунды, а секунда копейка рубль бережет
2. Dr.HiHi 3 05.10.21 23:51 Сейчас в теме
10200/3600 = 2.83333333333333333333...
83333333333333333333... * 0.6 = 0.5

если в запросе, то через добавитькдате
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1), ЧАС, ВЫРАЗИТЬ(2.5 - 0.499999 КАК ЧИСЛО(15))), МИНУТА, (2.5 - ВЫРАЗИТЬ(2.5 - 0.499999 КАК ЧИСЛО(15))) * 100)
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1), СЕКУНДА, 10200)
7. user833844 17.10.21 21:47 Сейчас в теме
(2) (3)

Спасибо большое! в таком виде все красиво выводит)

только появился новый вопрос... как быть с итогами??
8. Dr.HiHi 3 17.10.21 22:53 Сейчас в теме
(7)
можно значение держать не в формате датавремя, а в минутах или секундах, а в итогах преобразовывать
или в итогах через разность дат получать минуты/ секунды суммировать и потом преобразовывать через добавитькдате в формат даты
10. user833844 18.10.21 22:05 Сейчас в теме
(8)
я пробовала от обратного, переводить в секунды и потом аналогично выделять целое и дробное. С числами десятичными все хорошо считает, но проблема с целыми. получается так..
н-р 8 часов:
ВЫРАЗИТЬ (8-0,5 как число (15,0))*3600+ ВЫРАЗИТЬ( 8 - ВЫРАЗИТЬ (8-0,5 как число (15,0)))*100*60= 7*3600+1*1000*60=31200
31200/3600 = 8,66 
8+(0,66*0,6)= 8.40 

из за этого отнимания 0.5 число в результате больше на 40 мин...
11. Dr.HiHi 3 18.10.21 23:52 Сейчас в теме
(10) что-то где-то в расчетах промахнулись
ВЫРАЗИТЬ (8-0.5 как число (15,0))*3600 + (8 - ВЫРАЗИТЬ (8-0.5 как число (15,0))) * 100 * 60 = 8 * 3600 + 0 * 100 * 60 = 28800
28800 / 3600 = 8
13. user833844 19.10.21 08:57 Сейчас в теме
(11) тогда я не понимаю, где у меня ошибка..
я сделала отдельные поля в запросе, где данные в секундах, потом суммирую и перевожу в время. целые числа считает правильно, а дробные нет((
Прикрепленные файлы:
14. Dr.HiHi 3 19.10.21 13:56 Сейчас в теме
(13)
не вижу преобразование в дату
в ресурсах должно быть что-то типа
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1.1), СЕКУНДА, СУММА(ВЫРАЗИТЬ (8-0.5 как число (15,0))*3600 + (8 - ВЫРАЗИТЬ (8-0.5 как число (15,0))) * 100 * 60))
15. user833844 19.10.21 20:51 Сейчас в теме
(14) все я разобралась))

(СУММА(ВремяВПростоеВСек) / 3600 - (ВЫРАЗИТЬ(СУММА(ВремяВПростоеВСек) / 3600 - 0.49 КАК ЧИСЛО(15, 0)))) * 0.6 + (ВЫРАЗИТЬ(СУММА(ВремяВПростоеВСек) / 3600 - 0.49 КАК ЧИСЛО(15, 0)))

Большое спасибо!)
12. Dr.HiHi 3 18.10.21 23:56 Сейчас в теме
(10) отнимание 0.5 нужно для того, чтобы корректное целое число вышло при округлении (ВЫРАЗИТЬ КАК ЧИСЛО(15, 0))
9. Release 17.10.21 23:50 Сейчас в теме
(7) А какие итоги надо в печатной форме по ПЛ по упомянутым показателям времени?
У вас печатная форма по некоторому количеству ПЛ?
И зачем переводить значения в самом запросе?
Почему не делать пересчёт при заполнении этих показателей в таб.док печатной формы? Не думаю, что это так уж снизить скорость её формирования.
3. puzo50 06.10.21 07:02 Сейчас в теме
ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете целую часть числа
поле - ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете дробную часть числа
и переводите её в минуты. то есть х/100 = у/60. задача - найти у.
ну и добавляете к целой части числа, коли надо
6. user833844 12.10.21 21:18 Сейчас в теме
(3)(3) Поля "ПутевойЛистВыработкаТСВремяВНаряде.Количество" и "ПутевойЛистВыработкаТСВремяВПростое.Количество" это число. И не всегда там 0,5.. там может быть и 1.12 (1 час, 12 мин) и 3.45. как в этом случае вычленять?
5. echo77 1884 06.10.21 19:39 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот