Имя: Пароль:
1C
1С v8
Как подсчитать в отчете сумму времени?
,
0 Nores
 
09.08.12
07:24
Привет всем сонва)Есть задача по который я перерыл весь интернет и подобные темы здесь на форуме но конечного результата нигде не увидел
Есть время работы Транспортного средства например на контрагента СГК оно отработало за день 2:30 и 1:30..Как в отчете(через запрос) подсчитать сумму и вывести в том же формате, должно получиться 4:00?
1 shuhard
 
09.08.12
07:25
(0)[ я перерыл весь интернет и подобные темы здесь на форуме но конечного результата нигде не увидел ]
брехня
2 Wobland
 
09.08.12
07:25
даты не складываются. сколько будет 5е марта плюс 2е апреля?
3 Wobland
 
09.08.12
07:26
(0) ну и скажи, какой тип у твоего времени?
4 SeraFim
 
09.08.12
07:27
И снова я подемпинугую... Продам СП!!! Дешево!!!
Кури разность РазностьДат в секундах (ну или в другой единице измерения, достаточной для твоей точности). Секунды суммируй, переводи куда надо...
5 Wobland
 
09.08.12
07:28
(4) покупаю! если там есть статья про СуммуДат
6 Nores
 
09.08.12
07:31
Тип Дата конечно же
7 Живой Ископаемый
 
09.08.12
07:32
86 год.
8 Nores
 
09.08.12
07:33
РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Минута) на подое этого все отдельно я получаю, проблема только получить результат формата ЧЧ:мм
9 Wobland
 
09.08.12
07:34
(6) тогда извлекать минуты, суммировать, извлекать часы, умножать на 60, суммировать, делить на 60, получать остаток от деления и отдавать это всё в ДатуВремя
10 Nores
 
09.08.12
07:35
Я так и сделал, напиши как отдать это все в ДатуВремя?
11 Wobland
 
09.08.12
07:35
(8) в (0) сказано по-другому. не можешь готовые секунды в часы и минуты перевести?
12 Живой Ископаемый
 
09.08.12
07:36
2(10) известно как, вызвав функцию для вычисляемого поля в СКД.
13 Wobland
 
09.08.12
07:36
(10) ДатаВремя(1, 1, 1, Часы, Минуты, 0)
14 Nores
 
09.08.12
07:39
Щас ребята попробую
15 SeraFim
 
09.08.12
07:39
ДобавитьКДате(ДатаВремя(1,1,1,0,0,0), Минута, ОбщееКоличествоМинут) и переводить ничего не надо...
16 Wobland
 
09.08.12
07:40
(15) плин, забыл об этом ;)
17 Nores
 
09.08.12
08:14
И куда это добавить ДобавитьКДате(ДатаВремя(1,1,1,0,0,0), Минута, ОбщееКоличествоМинут)  как только я получил сумма(Минуты)
18 Wobland
 
09.08.12
08:23
(17) какие ваши мысли?
19 Nores
 
09.08.12
09:31
Честно не предстваляю не гуру 1С и сталкиваюсь с таким впервые(((
20 Nores
 
09.08.12
09:31
Жду вашей поддержки и помощи в этом
21 Wobland
 
09.08.12
09:34
(20) выбрать ДобавитьКДате(ДатаВремя(1,1,1,0,0,0), Минута, КакТыТамПосчиталОбщееКоличество) КАК ВотОно
22 Лефмихалыч
 
09.08.12
09:35
(0) переведи в секунды от какой-нибудь примечательной даты, например ДатаВремя(1,1,1), потом складывай
23 Nores
 
09.08.12
11:36
ок спасибо щас попробую
24 Nores
 
09.08.12
11:43
Не смотрите так то получилось, но как Итоги СУММА(КОЛИЧЕСТВОЧАСОВ) представить как дату?, по строчно выдал мне все по дате с временем а итоги нет
25 Nores
 
09.08.12
11:44
Вернулся все к томуже((
26 Wobland
 
09.08.12
11:45
(24) потому что ты пытаешься суммировать несуммируемое. итоги по дате как-то ..кхм.. нетрадиционно выглядят в запросе. да поправят меня более бородатые. выясняй секунды и с ними оперируй.
27 Nores
 
09.08.12
11:48
Так я ребя та хотел у вас узнать можно ли так сделать или нет, я знаю что итоги по времени не суммируются((, но все равно спасибо всем
28 Nores
 
09.08.12
11:48
Думал вдруг есть какие методы, позволяющие это сделать)
29 IronDemon
 
09.08.12
11:48
(24) ДобавитьКДате(ДатаВремя(1, 1, 1), "Час", Сумма(КОЛИЧЕСТВОЧАСОВ))
30 IronDemon
 
09.08.12
11:49
В чем "КОЛИЧЕСТВОЧАСОВ"?
31 Nores
 
09.08.12
11:58
Щас запрос скину нагляднее будет

ПостроительОтчетаЛистУчета.Текст =
   "ВЫБРАТЬ
   |    уатЛистУчетаРабота.Ссылка КАК Документ,
   |    уатЛистУчетаРабота.Ссылка.ДокументОснование КАК ДокументОснование,
   |    уатЛистУчетаРабота.Контрагент КАК Контрагент,
   |   уатЛистУчетаРабота.КоличествоЧасов как КоличествоЧасов,
   
///подсчет времени час-целое, минута дробное...т.е. 8,5 это 8 часов и 30 минут

| (ВЫРАЗИТЬ(РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Час) как Число(15,0))*60 + ( РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Минута)-(РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Час)*60)))/60 Как Итог,




(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Час) как Число(15,0))*60 + ( РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Минута)-(РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Час)*60)))/60)) КАК СУММАЧАС,
   |    уатПервоначальныеСведенияТС.ГаражныйНомер КАК Гаражный
   |ИЗ
   |    Документ.уатЛистУчета.Работа КАК уатЛистУчетаРабота
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
   |        ПО (уатПервоначальныеСведенияТС.ОсновноеСредство = уатЛистУчетаРабота.Ссылка.ТранспортноеСредство)
   |ГДЕ
   |    (НЕ уатЛистУчетаРабота.Контрагент.Наименование ЕСТЬ NULL )
   |    И уатЛистУчетаРабота.Ссылка.ДокументОснование.ДатаВыезда МЕЖДУ &НачДатаВыезда И &КонДатаВыезда
   |    И уатЛистУчетаРабота.Ссылка.ДокументОснование.Организация = &Организация
   |СГРУППИРОВАТЬ ПО
   |    уатПервоначальныеСведенияТС.ГаражныйНомер,
   |    уатЛистУчетаРабота.КоличествоЧасов,
   |   уатЛистУчетаРабота.Ссылка,
   |    уатЛистУчетаРабота.Контрагент,
   |    уатЛистУчетаРабота.Наименование,
   |    уатЛистУчетаРабота.НачДата,
   |    уатЛистУчетаРабота.КонДата,
   |    уатЛистУчетаРабота.Ссылка.ДокументОснование
   |ИТОГИ
   |Сумма(Итог)
   |ПО
   |    ОБЩИЕ,
   |    Контрагент,
   |    ДокументОснование,
   |    Наименование,
   |    Гаражный,
   |    Документ";
32 Nores
 
09.08.12
11:59
ссори там ошибка выше!!


"ВЫБРАТЬ
   |    уатЛистУчетаРабота.Ссылка КАК Документ,
   |    уатЛистУчетаРабота.Ссылка.ДокументОснование КАК ДокументОснование,
   |    уатЛистУчетаРабота.Контрагент КАК Контрагент,
   |   уатЛистУчетаРабота.КоличествоЧасов как КоличествоЧасов,
   
///подсчет времени час-целое, минута дробное...т.е. 8,5 это 8 часов и 30 минут


| (ВЫРАЗИТЬ(РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Час) как Число(15,0))*60 + ( РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Минута)-(РазностьДат(уатЛистУчетаРабота.НачДата,уатЛистУчетаРабота.КонДата,Час)*60)))/60 Как Итог,

   |    уатПервоначальныеСведенияТС.ГаражныйНомер КАК Гаражный
   |ИЗ
   |    Документ.уатЛистУчета.Работа КАК уатЛистУчетаРабота
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
   |        ПО (уатПервоначальныеСведенияТС.ОсновноеСредство = уатЛистУчетаРабота.Ссылка.ТранспортноеСредство)
   |ГДЕ
   |    (НЕ уатЛистУчетаРабота.Контрагент.Наименование ЕСТЬ NULL )
   |    И уатЛистУчетаРабота.Ссылка.ДокументОснование.ДатаВыезда МЕЖДУ &НачДатаВыезда И &КонДатаВыезда
   |    И уатЛистУчетаРабота.Ссылка.ДокументОснование.Организация = &Организация
   |СГРУППИРОВАТЬ ПО
   |    уатПервоначальныеСведенияТС.ГаражныйНомер,
   |    уатЛистУчетаРабота.КоличествоЧасов,
   |   уатЛистУчетаРабота.Ссылка,
   |    уатЛистУчетаРабота.Контрагент,
   |    уатЛистУчетаРабота.Наименование,
   |    уатЛистУчетаРабота.НачДата,
   |    уатЛистУчетаРабота.КонДата,
   |    уатЛистУчетаРабота.Ссылка.ДокументОснование
   |ИТОГИ
   |Сумма(Итог)
   |ПО
   |    ОБЩИЕ,
   |    Контрагент,
   |    ДокументОснование,
   |    Наименование,
   |    Гаражный,
   |    Документ";
33 Rovan
 
гуру
09.08.12
12:08
(32) итак ? итог правильно считает в кол-во часах ?
34 Nores
 
09.08.12
12:28
Я там сверху написал как считает, все правильно
35 ptiz
 
09.08.12
12:37
В запросе, имхо, никак, только обрабатывать результат при выводе.

А в СКД можно сделать ресурс (секунды -> в формат ЧЧ:ММ)

Строка(ВЫБОР
   КОГДА ВЫРАЗИТЬ(СУММА(ОтработаноСекундВсего)/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; ЧВН=")
36 ptiz
 
09.08.12
12:38
Хотя можно и в запросе, но через одно место:
кучу ВЫБОР КОГДА и склеиванием строки вручную
37 Nores
 
09.08.12
13:00
ммм спасибо
38 Nores
 
09.08.12
13:16
Ptiz а куда вставить ?(((
39 ptiz
 
09.08.12
13:19
(38) Что вставить? Ресурс в СКД?
Ессно туда, где все ресурсы.
40 Nores
 
09.08.12
14:02
Нет сам когд же в выбрать заносится этот?тот что ты написал?
41 Wobland
 
09.08.12
14:07
(40) в ресурсы