Версия для печати темы (https://pro1c.org.ua/index.php?s=48b30f2fc7692674cf675a98ba97be1b&showtopic=20409)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Помогите преобразовать полученные секунды к часам

Автор: kosalex 24.10.14, 10:56

Добрый день! Есть запрос:

ВЫБРАТЬ
    ПростойВагона.НомерВагона,
    ПростойВагона.ПрибытияВагона,
    ПростойВагона.УстановкаПодВыгрузку,
    ПростойВагона.ОкончаниеВыгрузки,
    ПростойВагона.ПрибытиеДокументовПослеДекларирования,
    ПростойВагона.ПрибытиеИнструкцийВОтправкуПОРПВ,
    ПростойВагона.УстановкаПодПогрузку,
    ПростойВагона.ОкончаниеПогрузки,
    ПростойВагона.ПрибытиеДокументовПослеТаможирования,
    ПростойВагона.ВозвратПВст,
    ПростойВагона.Ответственный,
    ПростойВагона.ПринадлежностьВагона
ПОМЕСТИТЬ ВТ_РСПростой
ИЗ
    РегистрСведений.ПростойВагона КАК ПростойВагона
ГДЕ
    КФЗПростойВагона.Период >= &ПериодНачало
    И КФЗПростойВагона.Период <= &ПериодОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_РСПростой.НомерВагона,
    ВТ_РСПростой.ПрибытияВагона,
    ВТ_РСПростой.УстановкаПодВыгрузку,
    ВЫБОР
        КОГДА ВТ_РСПростой.ПрибытияВагона <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                И ВТ_РСПростой.УстановкаПодВыгрузку <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, ВТ_РСПростой.УстановкаПодВыгрузку, СЕКУНДА) / 3600
        ИНАЧЕ 0
    КОНЕЦ КАК ВремяДоУстановкиПодВыгрузку,
    ВТ_РСПростой.ОкончаниеВыгрузки,
    ВЫБОР
        КОГДА ВТ_РСПростой.УстановкаПодВыгрузку <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                И ВТ_РСПростой.ОкончаниеВыгрузки <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.УстановкаПодВыгрузку, ВТ_РСПростой.ОкончаниеВыгрузки, СЕКУНДА) / 3600
        ИНАЧЕ 0
    КОНЕЦ КАК ВремяВыгрузки,
    ВТ_РСПростой.ПрибытиеДокументовПослеДекларирования КАК ПрибытиеДокументовДекларирования,
    ВТ_РСПростой.ПрибытиеИнструкцийВОтправкуПОРПВ КАК ПрибытиеИнструкции,
    ВТ_РСПростой.УстановкаПодПогрузку,
    ВЫБОР
        КОГДА ВТ_РСПростой.ОкончаниеВыгрузки <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                И ВТ_РСПростой.УстановкаПодПогрузку <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеВыгрузки, ВТ_РСПростой.УстановкаПодПогрузку, СЕКУНДА) / 3600
        ИНАЧЕ 0
    КОНЕЦ КАК ВремяВОжиданииПогрузки,
    ВТ_РСПростой.ОкончаниеПогрузки,
    ВЫБОР
        КОГДА ВТ_РСПростой.УстановкаПодПогрузку <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                И ВТ_РСПростой.ОкончаниеПогрузки <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.УстановкаПодПогрузку, ВТ_РСПростой.ОкончаниеПогрузки, СЕКУНДА) / 3600
        ИНАЧЕ 0
    КОНЕЦ КАК ВремяПогрузки,
    ВТ_РСПростой.ПрибытиеДокументовПослеТаможирования КАК ВремяПрибытияДокументовТаможирования,
    ВТ_РСПростой.ВозвратПВстКраматорск КАК СдачаНаСтКраматорск,
    ВТ_РСПростой.ПринадлежностьВагона,
    ВЫБОР
        КОГДА ВТ_РСПростой.ОкончаниеПогрузки <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                И ВТ_РСПростой.ВозвратПВстКраматорск <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеПогрузки, ВТ_РСПростой.ВозвратПВстКраматорск, СЕКУНДА) / 3600
        ИНАЧЕ 0
    КОНЕЦ КАК ВремяВозвратаНаСт
ИЗ
    ВТ_РСПростой КАК ВТ_РСПростой



В итоге когда считаю общее время простоя, т.е. складываю рассчитываемые поля, то получается к примеру "7,8" , как это записать читаемо? Чтобы перед запятой были часы, а после минуты, минут же не может быть больше 60 в часе))

Как редактировать свое уже написанное сообщение?

Автор: Ardi 24.10.14, 11:36

В СКД есть форматирование при выводе отчета. Зачем в запросе форматировать?

Автор: Petre 24.10.14, 11:40

Куда записывать надо? Или имеется ввиду отображать в отчете?
Я бы сделал параметр датой и получал бы как пустая дата + секунды. Но это удобно только для периода до одного дня.

Автор: kosalex 24.10.14, 11:47

Цитата(Ardi @ 24.10.14, 12:36) *
В СКД есть форматирование при выводе отчета. Зачем в запросе форматировать?




У меня в вычисляемом поле после суммы нужных полей в которых рассчитывается разность дат в секундах и делиться на 3600 получается к примеру 7,8 ч, в часе 60 минут, как сделать чтобы 7,8 ч, преобразовалось в 8,2 ч, или 8 часов 20 минут, хоть как нибудь?

Автор: Petre 24.10.14, 11:58

7,8 часов = 7 часов и 0,8 * 60 = 48 минут.
Откуда 8 часов и 20 минут?

Автор: kosalex 24.10.14, 12:31

Цитата(Petre @ 24.10.14, 12:58) *
7,8 часов = 7 часов и 0,8 * 60 = 48 минут.
Откуда 8 часов и 20 минут?



Ой, Вы правы, вместо 7,8ч, должно быть 7,48 ч. или 7ч. 48мин.

Автор: alex040269 24.10.14, 12:41

РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеПогрузки, ВТ_РСПростой.ВозвратПВстКраматорск, СЕКУНДА) - 
ВЫРАЗИТЬ(РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеПогрузки, ВТ_РСПростой.ВозвратПВстКраматорск, СЕКУНДА)/3600,ЧИСЛО(3,0))*3600
-это количество секунд.

в общем проще загнать результат в запроса ТЗ и вывести в СКД.


Автор: kosalex 24.10.14, 13:50

Цитата(alex040269 @ 24.10.14, 13:41) *
в общем проще загнать результат в запроса ТЗ и вывести в СКД.



Не понял smile.gif

Автор: alex040269 24.10.14, 13:53

Добавить набор данных - объект.
Данные - таблица значений.

Автор: kosalex 24.10.14, 14:00

Цитата(alex040269 @ 24.10.14, 14:53) *
Добавить набор данных - объект.
Данные - таблица значений.



аааа)понял, буду пробовать.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua