8.х Получение даты из числа в запросе

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

  1. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    У меня в регистре сведений есть измерении "Время", указывается оно в секундах(разница между временем создания и проведения документа). В запросе соответвенно я тоже получаю это время в секундах. подскажите как можно вывести это число в удобном для пользователя виде т.е <ЧЧЧ:ММ:СС>. Вынкция ПриВыводеСтроки в данном случае не удобна т.к выведение этого измерения в табличное поле можно отключить или расположить в другом месте*отчет делается через построитель и как следвие достаточно гибок)
    Заранее спасибо!
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ошибка в проектировании - писать время надо было в полном формате и не имели бы проблем.

    А так: используйте ДобавитьКДате - описание можете посмотреть в справке
  3. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Там проблема в том что мне нужно из всей Даты только время. мало того мне нужно это время еще и "складывать".
    Чуть подробнее как что работает. В регистр заноситься время(в секундах) работы пользователя. В отчете нужно получить- <Пользователь> потратил <ЧЧЧ:мм:сс> на проведение документа и Итог по всем документам В том же формате. Вопрос в том как это вывести удобном виде. Т.е фактически мне нужно число секунд
    первести в количество часов, минут, секунд и выдать это значение пользователю.
    Ничего более умного как складывать секунды я не придумал. Другой менее геморойный метод я не смог придумать, если подскажите в каком направлении копать, буду примного благодарен.
  4. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Можно хранить время начала и время окончания. Вычитая из окончания начальное - можно получить разницу в тех же секундах.

    Не знаю как это утоптать в запрос. А "руками" можно так:
    Код:
    Разница = ...наше время в секундах...
    Часы = Цел(Разница / 3600);
    Минуты = Цел((Разница - Часы*3600)/60);
    Секунды = Цел(Разница - (Минуты*60) - (Часы * 3600));
    
    
    Хотя, а оно вам точно надо выводить с минутами и часами то? Вот у меня такие задачи решаются просто выводом времени в секундах (а ибо нефиг), либо в минутах с дробной (десятичной) частью. Типа 15,85 минут
  5. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Руками у меня сделано в ФормеСписка. Меня в секундах вполне все устраивает...Отчет я же не для себя делаю, а для начальства..и увидев "3224,45" в отчете оно ох как не возрадуется=(
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Господа, я уже дал направление - неужели так тяжело справку посмотреть?

    Берете ЛЮБУЮ дату на НАЧАЛО ДНЯ, в ней прибавляете секунды и вы вы получаете некую дату с вашим временем! Дальше вычленяете дни, часы, минуты, секунды (справку посмотрите - все там есть) и получаете нужное значение!

    Пример:

    1. Берем дату 01.01.200900:00:00 (она вообще не важна - нам важно, что было начало дня)
    2. Добавляем к ней секунды из РС, получаем нечто, типа 01.01.2009 09:10:15
    3. Берем разницу дат (01.01.200900:00:00 и 01.01.2009 09:10:15) в нужном формате, или вычленяем отдельно часы и прочее
    4. Все! Все работает в запросе.
  7. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Это мне понятно и проблем с этим не возникает. проблема не в этом.
    В запросе делается Итог по времени(то что в секундах) и если взять дату 01.01.0001 00:00:00 и прибавить к ней время в секундах то получается 10.01.0001 и в итоге все игра с форматом даты(чтобы пользователь видил только время) не проходит. Мне же нужно чтобы пользователь видил не ДД.чч.мм.сс, а ЧЧЧ.мм.сс , т.е что бы пользователь видел "Петров- 102:23:12" и тогда всем понятно что пользователь отработал 102 часа и т.д..
    Если же вы считаете что я допустил ошибку при проектировании, подскажите как можно исправить, пока еще база не отдана пользователям.

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