![]() |
|
Суммирование секунд в группировках отчета СКД | ☑ | ||
---|---|---|---|---|
0
Demasiado
28.08.13
✎
15:16
|
Есть отчет, в котором собирается некоторая информация (ТЗ и передается в СКД в виде набора данных - Объект) + есть поле с временем в секундах. Необходимо в колонке (например, "Время") выводить время в формате "ЧЧ:мм:сс". По форуму поискал, видел рекомендации и в вычисляемые поля внести некоторое выражение, предложения с оператором "Формат", но что то не взлетело. Подскажите, что куда нужно добавить в мой отчет, что бы и в колонках и по группировкам выходило правильное время? Модель отчета лежит вот тут http://yadi.sk/d/kGyprnzN8QGNv , будет работать в любой конфе не УФ, где есть документ РеализацияТоваровУслуг, с реквизитом Контрагент
|
|||
1
Demasiado
29.08.13
✎
09:47
|
hands up
|
|||
2
Wobland
29.08.13
✎
09:48
|
какого типа поле?
|
|||
3
Fragster
модератор
29.08.13
✎
09:49
|
ДобавитьКДате(ДатаВремя(1,1,1), ТвоиСекунды, "Секунда") - и вот это уде выводи форматом
|
|||
4
Demasiado
29.08.13
✎
11:20
|
(2) поле сейчас числом, могу сделать датой как написано в (3).
(3) так поле надо записать в текст запроса или в СКД в вычисляемые поля? а надо ли будет это поле еще ресурсом делать? |
|||
5
Fragster
модератор
29.08.13
✎
11:43
|
(4) да хоть в выражение представления
|
|||
6
Demasiado
29.08.13
✎
13:19
|
(5) В объект вставил колонку с типом "Число"(потому что у меня число секунд), в соответствующем поле прописал выражение представления твою формулу, само поле закинул в ресурсы (с функцией СУММА) и все равно выводится числом, а не часы минуты секунды
|
|||
7
Fragster
модератор
29.08.13
✎
14:23
|
||||
8
Demasiado
29.08.13
✎
16:05
|
(7) Спасибо комрад, все заработал:) Резюмирую для следующих поколений: В поля наборов данных надо добавлять поле вида ДобавитькДате(ДатаВремя(1,1,1),"Секунда", Переменная_С_Секундами_В_Виде_Чисел), тип значения не указывается и указывается любой нужный формат. В ресурсы добавляется строка вида ДобавитькДате(ДатаВремя(1,1,1),"Секунда", Сумма(Переменная_С_Секундами_В_Виде_Чисел)) и этого достаточно что бы эСКДэшные отчеты начали суммировать время
|
|||
9
Demasiado
29.08.13
✎
16:06
|
(8) +т е "заработало"
|
|||
10
Demasiado
29.08.13
✎
18:01
|
Веселье начинается если количество часов в группировке становится больше 24. При формате ЧЧ:ММ:СС происходит искажение данных. Если делаем "ДД.ММ.гггг ЧЧ:ММ:СС" то в группировке где у нас только часы и минуты видим такую картину "01.01.01 13:24:12", можно ли как то замутить что были либо часов отображало свыше 24(например, "36:25:47") или если время по группировке меньше 24 часов - то писало "00.00.00 23:59:48"
|
|||
11
Wobland
29.08.13
✎
18:14
|
(10) благословляю
v8: Формат даты или 240 часов вместо 10 суток |
|||
12
Fragster
модератор
29.08.13
✎
18:16
|
Выбор Когда Секунд > 86400 Тогда
Выразить(Секунд / 86400 - 0.5 КАК Число(5,0)) Иначе 0 Конец КАК Дней Ну и дальше это склеить с твоим полем в вычисляемом поле СКД |
|||
13
Fragster
модератор
29.08.13
✎
18:21
|
а, тут даже выбор не нужен...
|
|||
14
Demasiado
29.08.13
✎
19:06
|
Спасибо, щя будем пробовать...
|
|||
15
Demasiado
30.08.13
✎
08:02
|
Итак, окончательный вариант: в поле набора данных нужного поля ничего не пишем, ни выражение представления ни Формат. В ресурсы в выражение прописывается формула:
Строка(ВЫБОР КОГДА ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") * 3600 <= СУММА(Переменная_С_Секундами_В_Виде_Чисел) ТОГДА ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") ИНАЧЕ ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") - 1 КОНЕЦ) + ":" + Формат(ВЫБОР КОГДА ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") * 3600 <= СУММА(Переменная_С_Секундами_В_Виде_Чисел) ТОГДА ВЫРАЗИТЬ((СУММА(Переменная_С_Секундами_В_Виде_Чисел) - ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") * 3600) / 60, "Число(10,0)") ИНАЧЕ ВЫРАЗИТЬ((СУММА(Переменная_С_Секундами_В_Виде_Чисел) - (ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") - 1) * 3600) / 60, "Число(10,0)") КОНЕЦ, "ЧЦ=2; ЧДЦ=0; ЧН=00; ЧВН=") + ":" + Формат(ВЫБОР КОГДА ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") * 3600 <= СУММА(Переменная_С_Секундами_В_Виде_Чисел) ТОГДА ВЫРАЗИТЬ((СУММА(Переменная_С_Секундами_В_Виде_Чисел) - ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") * 3600) / 3600, "Число(10,0)") ИНАЧЕ ВЫРАЗИТЬ((СУММА(Переменная_С_Секундами_В_Виде_Чисел) - (ВЫРАЗИТЬ(СУММА(Переменная_С_Секундами_В_Виде_Чисел)/3600, "Число(10,0)") - 1) * 3600) / 3600, "Число(10,0)") КОНЕЦ, "ЧЦ=2; ЧДЦ=0; ЧН=00; ЧВН=") И все работает, всем участникам спасибо |
|||
16
Desna
30.08.13
✎
09:50
|
время в формате ЧЧ:ММ
ВЫБОР КОГДА уатВыработкаОбороты.ПараметрВыработки.Временный И &ВыводитьВремяВФорматеЧЧММ ТОГДА ВЫБОР КОГДА (ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 0))) - уатВыработкаОбороты.КоличествоОборот / 3600 > 0 ТОГДА (ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 0))) - 1 ИНАЧЕ ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 0)) КОНЕЦ * 60 + ВЫБОР КОГДА (ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 0))) - уатВыработкаОбороты.КоличествоОборот / 3600 > 0 ТОГДА уатВыработкаОбороты.КоличествоОборот / 3600 - ((ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 0))) - 1) ИНАЧЕ уатВыработкаОбороты.КоличествоОборот / 3600 - (ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 0))) КОНЕЦ * 60 КОГДА уатВыработкаОбороты.ПараметрВыработки.Временный И НЕ &ВыводитьВремяВФорматеЧЧММ ТОГДА ВЫРАЗИТЬ(уатВыработкаОбороты.КоличествоОборот / 3600 КАК ЧИСЛО(15, 2)) ИНАЧЕ уатВыработкаОбороты.КоличествоОборот КОНЕЦ КАК КоличествоОборот, |
|||
17
Desna
10.09.13
✎
12:41
|
время в формате ЧЧ:ММ
в вычисляемое поле (КоличествоОборот-КоличествоОборот%3600)/3600+(КоличествоОборот%3600)/6000-((КоличествоОборот%3600)/6000)%0.01 |
|||
18
Desna
10.09.13
✎
12:51
|
+(17) там же в вычисляемом поле, формат ЧДЦ=2; ЧРД=:
|
|||
19
Desna
10.09.13
✎
12:54
|
+(16) тут тоже формат
Если ВыводитьВремяВФорматеЧЧММ Тогда ЭлементОформления.Значение = "ЧДЦ=2; ЧРД=:"; Иначе ЭлементОформления.Значение = "ЧДЦ=3; ЧРД=,"; КонецЕсли; 17+18 рулит, 16 писали когда еще скд не было |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |