Имя: Пароль:
1C
1С v8
Расчет времени в отчете скд
,
0 IT_PROGRAMMIST
 
12.02.13
19:32
Добрый вечер. пл. 8.2.16.368.
Есть отчет(скд), который показывает сколько отработал станок. Время в регистре,которое использует отчет ,хранится в секундах. Для отображения времени в часах с минутами сделал вычисляемое поле, которые использует функцию общего модуля. Отчет работает отлично. Только есть один большой минус- долго. Как можно сократить его выполнение без расчета времени в запросе?

функция общего модуля:
Часы = Цел(Время/3600);
Минуты = Цел((Время-Часы*3600)/60);
   
Возврат ""+Часы+" ч."+Минуты+" мин.";
1 regniws
 
12.02.13
19:36
(0) а отчет точно работает медленно из-за расчета времени? И чем не нравится вычисления делать
2 regniws
 
12.02.13
19:38
+1 вычисления в запросе
3 IT_PROGRAMMIST
 
12.02.13
19:38
сделал замер времени: с использованием вычисляемого поля отчет строится приблизительно 30 секунд. Но если выводить время просто в секундах(т.е без использования вычисляемого поля) - 5 секунд.
4 regniws
 
12.02.13
19:39
(3) а вычислить время в запросе, в чем проблема, зачем гнать процедуру? сколько строк в результате работы?
5 IT_PROGRAMMIST
 
12.02.13
19:40
при вычислении в запросе много чего надо будет проверять. К примеру: Цел в запросе нет, значит надо будет делать так:
Выразить(Время - 0.5 как Число(10,0) )
6 IT_PROGRAMMIST
 
12.02.13
19:40
при этом проверять, что число <0  и т.д
7 regniws
 
12.02.13
19:41
а время с долями секунд что ли?
8 regniws
 
12.02.13
19:42
и время бывает отрицательным??
9 IT_PROGRAMMIST
 
12.02.13
19:44
(7) в смысле с долями секунд. Я в отчете перевожу секунды в часы с минутами. При этом может быть 1540 часов 40 минут.
(8) я в (5) написал
10 Classic
 
12.02.13
19:52
ВЫБРАТЬ
   ВЫБОР
       КОГДА &Ч - ВЫРАЗИТЬ(&Ч КАК ЧИСЛО(2,0)) < 0
       ТОГДА ВЫРАЗИТЬ(&Ч КАК ЧИСЛО(2,0)) - 1
       ИНАЧЕ ВЫРАЗИТЬ(&Ч КАК ЧИСЛО(2,0))
   КОНЕЦ

Аналог функции Цел для положительных чисел
11 Classic
 
12.02.13
19:53
(5)
При Время = 0 у тебя будет замечательное значение
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.