При разработке отчетов в Системе компоновки данных (СКД) часто возникает необходимость вывести только время без даты в привычном формате ЧЧ:ММ (часы и минуты). По умолчанию платформа 1С может выводить дату целиком или использовать стандартные системные конструкторы формата, которые не всегда дают нужный визуальный результат. Рассмотрим по шагам, как правильно настроить форматную строку и избежать распространенных ошибок.
Проанализируем стандартный механизм установки формата времени в СКД:
Дата и в колонке «Оформление» нажмем кнопку открытия параметров.ДФ=ЧЧ:мм (или на латинице ДФ=HH:mm).Критически важный нюанс: регистр символов имеет решающее значение!
Выясним причину, почему при попытке указать ЧЧ:ММ выводится некорректный результат (например, 14:05 вместо минут выводится номер месяца):
мм (или mm) в платформе 1С отвечают за минуты.ММ (или MM) обозначают номер месяца.ЧЧ (или HH) выводят часы с лидирующим нулем в 24-часовом формате (например, 09:05). Если лидирующий ноль не нужен, используется одна буква Ч (или H).Посмотрим на ситуацию, когда реквизит даты не заполнен. По умолчанию тип Дата хранит значение 01.01.0001 00:00:00. При применении формата ДФ=ЧЧ:мм в отчете отобразится значение 00:00, что может вводить пользователей в заблуждение.
Чтобы скрыть вывод нулей для пустых значений, дополним форматную строку параметром незаполненной даты НЗ:
ДФ=ЧЧ:мм; НЗ=''
Рассмотрим другие способы применения формата вывода времени в зависимости от структуры отчета:
Формат(ПолеДата, "ДФ=ЧЧ:мм")
Проанализируем случай, когда время хранится не в типе Дата, а в виде числа секунд. Прямое применение ДФ= к числовым полям не работает. В таком случае разберем два пути решения:
1. Преобразование секунд в дату:
В запросе СКД или в выражении ресурса переведем секунды в дату относительно нулевой даты:
ДобавитьКДате(ДатаВремя(1, 1, 1), "Секунда", Сумма(ВремяВСекундах))
После такого преобразования к полю можно свободно применять оформление ДФ=ЧЧ:мм.
2. Вывод длительности свыше 24 часов:
Если суммарная продолжительность превышает 24 часа (например, 30 часов), стандартный формат даты сбросит циклический отсчет и покажет 06:00. Чтобы вывести полные часы длительности, воспользуемся «Выражением представления» и сформируем строку вручную:
Строка(Цел(ВремяВСекундах / 3600)) + ":" + Формат(Цел((ВремяВСекундах % 3600) / 60), "ЧЦ=2; ЧВН=")
В этом выражении функция Цел рассчитывает количество полных часов, а спецификатор ЧЦ=2; ЧВН= гарантирует вывод минут с лидирующим нулем.