Имя: Пароль:
1C
1С v8
Суммирование секунд в группировках отчета СКД
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
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 писали когда еще скд не было
Основная теорема систематики: Новые системы плодят новые проблемы.