|
Как реализовать расчет итогов продолжительности выполнения работ | ☑ | ||
---|---|---|---|---|
0
Aleksey1989
30.11.15
✎
11:07
|
Добрый день. Подскажите, пжл, можно ли с помощью скд реализовать следующее. Есть регистр сведений, в который записывается продолжительность выполнения различных операций, при чем запись происходит в 3 колонки "ЗатраченоЧасов", "ЗатраченоМинут", "ЗатраченоСекунд". В этом регистре есть измерение "Рабочий" и "ВидРабот". Мне нужно получить отчет, из которого можно понять, сколько времени тратит рабочий, при этом д.б. группировка по измерению "Рабочий" и "ВидРабот".
Проблема заключается в том, что если говорить про одиночную запись регистра, то там продолжительность выполнения работы указана корректно, т.е. если работа занимает 1 час 10 минут 20 сек, то там так и будет указано. Но когда я строю отчет с помощью скд, то у меня считаются итоги по полям "ЗатраченоЧасов", "ЗатраченоМинут" и "ЗатраченоСекунд", в результате чего для рабочего могут быть получены следующие итоги: 3 часа 87 минут 5123 секунд, а хотелось бы, чтобы общая продолжительность корректно показывалась. |
|||
1
Господин ПЖ
30.11.15
✎
11:09
|
>3 часа 87 минут 5123 секунд
проектировать надо структуру РС нормально |
|||
2
Горогуля
30.11.15
✎
11:09
|
выкини "ЗатраченоЧасов", "ЗатраченоМинут" и наслаждайся
|
|||
3
Господин ПЖ
30.11.15
✎
11:10
|
или для вас посчитать кол-во дней/часов/минус/секунд из секунд - это непосильная задача?
|
|||
4
Лефмихалыч
30.11.15
✎
11:10
|
кривой регистр, по этому и плохо выходит.
А вообще, всмопни начальную школу - тебе надо сложить три обычных дроби с разными делителями, как это делается? |
|||
5
Aleksey1989
30.11.15
✎
11:11
|
(1) нормально это как? Вместо 3-х реквизитов (часы, минуты, секунды) сделать один - "продолжительность" с типом "Дата"? Будут ли по дате рассчитываться итоги?
|
|||
6
Лефмихалыч
30.11.15
✎
11:12
|
(5) нормально - это хранить время в одном поле
|
|||
7
ale-sarin
30.11.15
✎
11:12
|
(5) С типом "число". И хранить там "всего секунд".
|
|||
8
Aleksey1989
30.11.15
✎
11:12
|
(3) Задача, конечно же, посильная, но я не знаю, как эти значения потом в отчете в итогах показать.
|
|||
9
Лефмихалыч
30.11.15
✎
11:12
|
(7) всю интригу запорол
|
|||
10
ale-sarin
30.11.15
✎
11:13
|
(9) Извините))) Жалею иногда...
|
|||
11
aleks_default
30.11.15
✎
11:20
|
(9)А может регитстр еще и периодический? Тогда еще ничего не закончилось:)
|
|||
12
Горогуля
30.11.15
✎
11:21
|
кстати, да. при чём тут сведения?
|
|||
13
ИУБиПовиц
30.11.15
✎
11:27
|
Можно как то так извратиться:) Результат запроса выгрузить в тз и потом В СКД делать запрос к этой тз:)
ЧАсов = 3; Минут = 87; Секунди = 2123; Пока Секунди > 60 цикл Секунди = Секунди - 60; Минут = Минут + 1; КонецЦикла; Пока Минут > 60 цикл Минут = Минут - 60; Часов = ЧАсов+ 1; КонецЦикла; Сообщить(ЧАсов); Сообщить(Минут); Сообщить(Секунди); |
|||
14
Горогуля
30.11.15
✎
11:28
|
(13) складывать и делить не научился?
|
|||
15
ИУБиПовиц
30.11.15
✎
11:30
|
(14)дык не интересно ж :)
|
|||
16
ИУБиПовиц
30.11.15
✎
11:32
|
И что складывать и делить, что бы получить 5 часов 2 минуты и 23 секунды надо?
|
|||
17
Горогуля
30.11.15
✎
11:34
|
(16) перевести часы, минуты и секунды в секунды, тщательно поделить три раза
|
|||
18
Aleksey1989
30.11.15
✎
11:42
|
Пока придумал следующее: вместо трех реквизитов (часы, минуты, секунды) ограничился одним - секунды, по этому реквизиту в скд считаю итоги и итоги рассчитываются по функции общего модуля, которую я специально создал:
Функция ПеревестиПродолжительностьвСтроку(КолВоСек) Экспорт КоличествоЧасов=Цел(КолВоСек/3600); КоличествоМинут = Цел(КолВоСек/60) - КоличествоЧасов*60; КоличествоСекунд = КолВоСек - КоличествоЧасов*3600 - КоличествоМинут*60; Если КоличествоЧасов >0 Тогда Результат = Строка (КоличествоЧасов) +":" + Строка(КоличествоМинут) + ":" + Строка(КоличествоСекунд); Иначе Результат = "00:" + Строка(КоличествоМинут) + ":" + Строка(КоличествоСекунд); КонецЕсли; Возврат Результат КонецФункции Итоги по видам работ правильно считаются, но вот итоги по конкретному рабочему непонятно, как считаются, например: Рабочий Затрачено времени Иванов А.А. 00:00:15 "Подготовка документов" 00:00:55 "Отправка документов" 00:00:15 Т.е. в итоги по конкретному рабочему встает время выполнения его последней работы. |
|||
19
Горогуля
30.11.15
✎
11:44
|
а не хочешь засуммировать свои секунды?
|
|||
20
Aleksey1989
30.11.15
✎
11:46
|
(19) хочу, но сначала мне нужно засуммировать секунды по виду работы, а потом в целом по рабочему.
|
|||
21
aleks_default
30.11.15
✎
11:53
|
"итоги рассчитываются по функции общего модуля, которую я специально создал"
Ты эту свою функцию не в расчет ресурсов в СКД вставь, а в выражение представления. Расчет итогов пусть стандартно секунды числом считает. |
|||
22
Aleksey1989
30.11.15
✎
12:01
|
(21) Если в выражение представления эту функцию установить, то итоги будут по общему количеству секунд рассчитываться, а не по моей функции.
|
|||
23
Горогуля
30.11.15
✎
12:03
|
(22) что тебе и нужно
|
|||
24
Aleksey1989
30.11.15
✎
12:12
|
(23) Нет, я неправильно выразился - согласно моей функции итоги должны переводиться в строку вида чч:мм:сс, а если разместить ссылку на эту функцию в ПредставлениеВыражения, то итоги будут считаться в секундах, т.е. в общем количестве секунд.
|
|||
25
Горогуля
30.11.15
✎
12:17
|
представление выражения как-то влияет на вычисление итогов. внеазпно как-то
|
|||
26
Aleksey1989
30.11.15
✎
12:21
|
Разобрался - я неправильно параметр в свою функцию передавал - я передавал просто значение реквизита, а надо было передавать СУММА(ЗначениеРеквизита), и эту формулу я указывал именно для ресурсов, а не в выраженииПредставления во вкладке "НаборыДанных".
|
|||
27
Горогуля
30.11.15
✎
12:23
|
не за что
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |