Добрый день!
Помогите справится с ситуацией. На форму вводится время работы ТС и простой, тип число. (н-р время работы 11 часов, просто 2,50 - что равно 2 часа, 50 мин) , в печатной форме нужно вывести разницу времени, т.е 11 - 2.5 =8 ч 10 мин. Есть запрос в нем сделано так:
то есть например время простоя 2 ч 50 мин.считает 2*3600+50*60=10200 10200/3600=2.83 (это выводится на форму), а нужно 2.50
как правильно вывести на форму время и далее разность времен?
Помогите справится с ситуацией. На форму вводится время работы ТС и простой, тип число. (н-р время работы 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
как правильно вывести на форму время и далее разность времен?
По теме из базы знаний
- Как в запросе 1С преобразовать секунды в часы и минуты
- Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
- СКД: вывод времени в формате день, час, минута, секунда
- Мобильный помощник эксперта 1С (приложение android, позволяющее строить отчеты на СКД по логам технологического журнала и не только)
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) я так понимаю, что "ПутевойЛистВыработкаТСВремяВНаряде.Количество" и "ПутевойЛистВыработкаТСВремяВПростое.Количество" это в секундах. Если да, то можно их не делить на 3600, а оставить в секундах, а потом добавить к пустой дате (Тем более при делении теряется секунда)
При выводе в печать добавить формат вывода типа ДФ='Ч "ч" мм "мин"'
При выводе в печать добавить формат вывода типа ДФ='Ч "ч" мм "мин"'
ОбластьСтрока.Параметры.ВремяФакт = Формат(Дата('00010101') + 2.83*3600, "ДФ='Ч ""ч"" мм ""мин""'");
// На вывод пойдет "2 ч 49 мин"
// как видно нет одной секунды, а секунда копейка рубль бережет
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)
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)
(8)
я пробовала от обратного, переводить в секунды и потом аналогично выделять целое и дробное. С числами десятичными все хорошо считает, но проблема с целыми. получается так..
н-р 8 часов:
из за этого отнимания 0.5 число в результате больше на 40 мин...
я пробовала от обратного, переводить в секунды и потом аналогично выделять целое и дробное. С числами десятичными все хорошо считает, но проблема с целыми. получается так..
н-р 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 мин...
(7) А какие итоги надо в печатной форме по ПЛ по упомянутым показателям времени?
У вас печатная форма по некоторому количеству ПЛ?
И зачем переводить значения в самом запросе?
Почему не делать пересчёт при заполнении этих показателей в таб.док печатной формы? Не думаю, что это так уж снизить скорость её формирования.
У вас печатная форма по некоторому количеству ПЛ?
И зачем переводить значения в самом запросе?
Почему не делать пересчёт при заполнении этих показателей в таб.док печатной формы? Не думаю, что это так уж снизить скорость её формирования.
ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете целую часть числа
поле - ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете дробную часть числа
и переводите её в минуты. то есть х/100 = у/60. задача - найти у.
ну и добавляете к целой части числа, коли надо
поле - ВЫРАЗИТЬ(Поле-0.5 КАК ЧИСЛО(15, 0)) - получаете дробную часть числа
и переводите её в минуты. то есть х/100 = у/60. задача - найти у.
ну и добавляете к целой части числа, коли надо
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот