[РЕШЕНО] Преобразовать число в время в запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем nbIpKuH_BaH9I, 31 авг 2015.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Всем привет. Че то подтупил. У меня есть реквизит с типом число. Логика моей программы предусматривает, что там хранятся минуты. Т.е. например 650. Мне нужно чтобы в запросе это отображалось как 10 часов 50 минут. Как это сделать?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    ДобавитьКДате(ДатаВремя(1,1,1), <РеквизитКоличествоМинут>, Минута)
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    А причем тут дата?
  4. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Костя получишь первый день+количество твоих минут в виде часов и минут.
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    не совсем понял? что бы в Запросе было
    Выборка.Часы
    а это было "10 часов 50 минут" -строкой или что

    не проще в запросе взять это поле поделить на 2 часы и минуты, и потом отдельно уже выводить и склеивать
  6. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Блин, нифига не понял ни одного ответа. Андрей, да в виде строки получить. Борь, причем тут день опять?
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    в виде строки количество часов и минут из числа минут ты вообще не получишь просто, потому что это преобразование типов значений.
    Придется извращаться с делением количества минут на 60, выделением целой части из результата деления.
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    1. В запросе преобразования типов нет. так что получить строку это под вопросом
    2 я бы тебе предложил сдеать 3 поля Твои исходное - минуты всего, часы - это твои имнуты/60 получаешь то что целое, и минуты =Твои все минуты-часы*60
    итого у тебя в двух полях будут отдельно часы, отдельно остаток минут, а там потом при выводе склеишь их
  9. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Прошу меня простить. Тогда всю задачу опишу. У меня есть отчет на СКД. Выглядит он вот так
    upload_2015-9-1_9-23-24.png
    Время выполнения указано в минутах. Для пущей наглядности я хочу, чтобы здесь на всех уровнях иерархии показывалось не 320 например, а 5 часов 20 минут. Но... При этом нужно чтобы ресурсы считались правильно. Тобишь складывались как и сейчас. Только лишь отображение другое стало.
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Может стоит использовать общие модули для расчета времени ?
    Боюсь что с общими итогами криво будет, СКД сама же итожит :(
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    а как ты планируешь количество минут больше суток/месяца/года отображать? 1620 минут - это 27 часов как бы...
    Имхо, не стоит городить огород, а просто добавить единицу измерения "мин." к названию колонки.
  12. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Да, так и будет. Это работа программиста. Она измеряется в часах. Будет 100 часов, значит 100 часов. Иногда работа длится реально не час, а скажем 20 минут. Для учета фактического времени это необходимо. Так что нужно чтобы было часы и минуты.
  13. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Варинты есть разные тем более СКД.
    Самое простое - это Выражение представления. можешь функцию добавить и она тебе будет преобразовывать и выдавать
    Еще варианты это позаздовать поля как я тебе уже описал и там их скомпановывать и выводить через условное оформление. типа того что если значение колонки больше 60 но меньше дня то вводи в часах, если больше дня то можно выводить в днях и т.д.

    Но для тебя лучший вариант это Процедура в общем модуле и выражение представления
  14. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Да, но итоги при этом не отображаются :) Только детальные записи.
  15. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    всмысле ? по идее он вычисляет итоги а потом эти итоги преобразует и отображает то что функция выведет
    --- Объединение сообщений, 1 сен 2015 ---
    Вот смотрит рис 1111
    Остаток товаров на складах Количество число.
    Когда написал функцию
    Код:
    Функция СделатьСтроку(Данные) Экспорт
       
        Возврат "Строка"+Данные;
    КонецФункции
    и через выражение представления ее сделал то рис 2
    видишь там уже строки но количество и там и там 27 в итогах

    Вложения:

    • 1111.jpg
      1111.jpg
      Размер файла:
      31,6 КБ
      Просмотров:
      7
    • 222222.jpg
      222222.jpg
      Размер файла:
      36,8 КБ
      Просмотров:
      7
    Последнее редактирование: 1 сен 2015
  16. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А сделать сразу указание в часах времени работы а не в минутах ?
    И сделать минимальную кратность 0.5 часа?
    Нафиг этот гемор с "поминутным" учётом. Минимальные работы это от 0.5 часа и кратны 0.5 часу и всё.
    А клиенты типа на 10 минут. Нафиг они нужны.
  17. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Я так их и не беру. Естественно оплата и планируемая работа идет в часах. Меня интересует точный факт. Я беру за час, а работаю по факту и 10 минут, а могу и 1 час 10. И вот этих подходов по 10 минут может быть очень много. Их нужно считать. Это важно.
    Андрей, попробую чуть позже на свои данных.
    --- Объединение сообщений, 1 сен 2015 ---
    Андрей, как я и говорил.
    upload_2015-9-1_10-28-13.png
    Последнее редактирование: 1 сен 2015
  18. 1c-ka
    Offline

    1c-ka Опытный в 1С

    Регистрация:
    27 май 2014
    Сообщения:
    194
    Симпатии:
    4
    Баллы:
    29
    я не знаю как это сделать на языке 1с, но формула перевода минут в часы такая:
    например, есть 210 минут
    шаг 1. 210 / 60 получаем 3,5
    шаг 2. берем целую часть, т.е. 3 и умножаем на 60 получаем 180
    шаг 3. 210 - 180 получаем остаток минут, т.е. 30
    Следовательно 210 это 3 часа 30 минут
    все решается математически
    :)
  19. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Спасибо огромное конечно, но такое делается одной строкой .
    Код:
    Возврат Строка(Цел(ЧислоМинут / 60)) + " часов " + Строка(ЧислоМинут - Цел(ЧислоМинут / 60) * 60) + " минут"; 
  20. TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Костя а ты чем затраченное время измеряешь? Если у тебя что то типа таймера то может просто дописать таймер что бы он переводил в кратные часу единицы. 0.5 часа, 0.25 часа, 0.3 часа и тд.
    И не парится с минутами. К тому же учитывая погрешность когда ты пишешь 10 минут, а фактически тратишь 13 минут или 7 минут то смысл в столь точных вычислениях?
    Как по мне так ты сильно точно пытаешься измерять. Но соблюдать эту точность ты не сможешь.

    Ну это так... мысли в слух.

Поделиться этой страницей