Имя: Пароль:
1C
1С v8
как пересчитать минуты в отчете функцией из документа?
,
0 YamEgor
 
12.09.19
12:55
Добрый день, в документе, в таб части, пересчитываются минуты и выводится представление, например 90мин выводится как 1ч 30 мин ,  
Функция ОбновитьНадписьВремя() Экспорт
    ВремяДляНадписи = УчетРабочегоВремени.Итог("ИтогоОтработано")/60;
    ВремяЧасы= Цел(ВремяДляНадписи);
    ВремяМинуты = Формат((времяДляНадписи - времяЧасы)*60,"ЧЦ=2; ЧДЦ=0");
    ЗаголовокВремяНадписи = "" + ВремяЧасы + " ч " + ВремяМинуты + " мин";
    Если не СокрЛП (ЗаголовокВремяНадписи) = "0 ч мин" тогда
        НадписьВремя = ЗаголовокВремяНадписи;
    иначе                                            
        НадписьВремя = "";
    конецЕсли;
КонецФункции
и можно ли этот алгоритм использовать для отчета, когда будут выводится минуты в отчете, чтобы выводилось не минутами а часы и минуты?
1 dka80
 
12.09.19
12:57
Можешь эту процедуру в общий модуль засунуть и вызвать ее
2 dka80
 
12.09.19
12:57
Можешь создать пользовательское поле и в нем этот код написать
3 YamEgor
 
12.09.19
13:16
можете подсказать как это сделать?
4 dem0sphen
 
12.09.19
14:10
(0)

Запили функцию ПолучитьДлительностьТекстом в общем не привилегированном модуле ТвойОбщийМодуль
и вызывай ее в отчете так:

https://drive.google.com/open?id=1rn96XY4Yt5QwCglWnjuXSFo2Dtc0pDf3

Функция ПолучитьДлительностьТекстом(ДлительностьВМинутах)
    
    ДлительностьСтрокой = Формат(дата(1,1,1) + ДлительностьВМинутах, "ДЛФ=T");
    ЧастиВремени = СтрРазделить(ДлительностьСтрокой, ":", Ложь);
    КолЧасов     = Число(ЧастиВремени[0]);
    КолМинут     = Число(ЧастиВремени[1]);
    ТекстЧасов    = ?(КолЧасов > 0, "ч ",     "");
    ТекстМинут    = ?(КолМинут > 0, "мин",     "");
    КолЧасов     = ?(КолЧасов > 0, КолЧасов,    "");
    КолМинут     = ?(КолМинут > 0, КолМинут,    "");
    
    Возврат СтрШаблон("%1%2%3%4", КолЧасов, ТекстЧасов, КолМинут, ТекстМинут);
    
КонецФункции // ПолучитьДлительностьТекстом()
5 dem0sphen
 
12.09.19
14:12
(4) поправь: ДлительностьСтрокой = Формат(дата(1,1,1) + ДлительностьВМинутах*60, "ДЛФ=T");
6 YamEgor
 
12.09.19
14:16
Спасибо сейчас попробую
7 YamEgor
 
12.09.19
14:36
в детальных записях отработала,а в итоговых нет, можно ли как нибудь и там заменить?
8 dem0sphen
 
12.09.19
15:03
(7) В лоб у меня не получилось в итогах вывести длительность текстом.
Есть вариант формировать свою таблицу значений с данными и ее как объект передавать в СКД в набор данных-объект.
9 hhhh
 
12.09.19
15:04
(7) там в итоговых точно не задано СУММА() или МАКСИМУМ() по этому полю  ?
10 YamEgor
 
12.09.19
15:25
(9) в отчете на закладке Ресурсы для этого поля задано СУММА()
11 YamEgor
 
12.09.19
15:36
и еще один вопрос, когда это поле измерение в регистре, то все работает, только в итогах нет, а если его сделать ресурсом в регистре, то выдает ошибку при формировании отчета : Индекс находится за границами массива,что то можно сделать?
12 vicof
 
12.09.19
15:40
Разобраться, что такое регистры, зачем они нужны и как работают.
13 hhhh
 
12.09.19
15:47
(10) ну убери, нахрена указал, если там не Сумма.
14 YamEgor
 
12.09.19
15:48
(12) Да согласен