Разработка и Конфигурация · 9 мин
Как вывести дату без секунд в 1С
Как вывести дату без секунд в 1С: функция Формат с ДФ и ДЛФ, настройка формата в запросах, СКД и печатных формах. Примеры кода и типичные ошибки.
Значение типа «Дата» в 1С всегда хранится с точностью до секунды, поэтому при выводе по умолчанию пользователь видит что-то вроде «12.03.2026 14:35:47». Для печатных форм, отчётов и сообщений такая точность обычно избыточна: секунды засоряют строку и ухудшают читаемость. Убрать их можно несколькими способами — через функцию Формат(), через настройку формата поля в запросе, СКД или табличном документе.
Ключевой инструмент — строка форматирования с конструкциями ДФ (формат даты) и ДЛФ (локальный формат даты). Правильно составленная форматная строка позволяет вывести дату в любом виде: только день-месяц-год, дату с часами и минутами без секунд, длинное представление с названием месяца. Ниже разобраны все рабочие варианты с примерами кода и типичными ошибками.
Почему в 1С дата всегда содержит секунды
Тип «Дата» во встроенном языке 1С хранит количество секунд от начала отсчёта, поэтому любое значение даты технически содержит и время. Даже если документ заполнен «12.03.2026 00:00:00», секунды в значении присутствуют — просто равны нулю. Скрыть их можно только на этапе представления, то есть при преобразовании даты в строку.
Важно разделять две задачи: изменить представление даты при выводе и физически обрезать секунды в значении. Первая решается форматированием и не меняет данные. Вторая нужна редко — например, при сравнении дат или группировке — и выполняется функциями работы с датами, а не форматом.
Функция Формат с конструкцией ДФ
Самый универсальный способ — функция Формат() с параметром ДФ, где задаётся точный шаблон вывода. Символы шаблона: d — день, M — месяц, yyyy — год, H — часы, m — минуты, s — секунды. Чтобы убрать секунды, достаточно не включать «ss» в шаблон.
Примеры форматных строк для типовых задач:
ДатаДокумента = Документ.Дата;
// Дата без времени: 12.03.2026
Строка1 = Формат(ДатаДокумента, "ДФ=dd.MM.yyyy");
// Дата и время без секунд: 12.03.2026 14:35
Строка2 = Формат(ДатаДокумента, "ДФ='dd.MM.yyyy HH:mm'");
// Дата с названием месяца: 12 марта 2026
Строка3 = Формат(ДатаДокумента, "ДЛФ=DD");
Обратите внимание на регистр букв: «M» — это месяц, а «m» — минуты. Перепутанные символы — самая частая причина странного вывода вида «12.35.2026», когда вместо месяца подставляются минуты. Если в шаблоне есть пробелы или разделители, весь шаблон удобно заключать в одинарные кавычки внутри строки.
СтрокаБезСекунд = Формат(ТекущаяДатаСеанса(), "ДФ='dd.MM.yyyy HH:mm'"Вывод даты без времени через ДЛФ
Если время не нужно вовсе, проще использовать конструкцию ДЛФ — локальный формат даты. Она учитывает региональные настройки пользователя и не требует ручного шаблона. Значение «D» даёт краткую дату (12.03.2026), «DD» — длинную с названием месяца и днём недели в зависимости от настроек.
// Краткая дата без времени
Сообщить(Формат(Документ.Дата, "ДЛФ=D"));
// Длинная дата: 12 марта 2026 г.
Сообщить(Формат(Документ.Дата, "ДЛФ=DD"));
ДЛФ удобен в пользовательских сообщениях и отчётах, где важно соответствие региональным настройкам. Недостаток — меньше контроля: нельзя, например, вывести дату с минутами, но без секунд. Для такого смешанного формата подходит только ДФ.
Сравнение вариантов
Полный контроль шаблона, подходит для печатных форм и обменов. Требует ручного задания всех символов.
Краткая дата по региональным настройкам, минимум кода. Не позволяет вывести часы и минуты без секунд.
Дата и время без секунд. Единственный простой способ получить минуты без секунд.
Без изменения кода, задаётся в конфигураторе. Действует только внутри конкретного отчёта или поля.
Формат даты в запросе и СКД
В запросах и схемах компоновки данных форматирование кодом не требуется — формат задаётся в свойствах поля. В конструкторе запроса или в настройках СКД у поля даты есть свойство «Формат», куда вписывается та же строка: ДФ='dd.MM.yyyy HH:mm' или ДЛФ=D. Отчёт выведет дату без секунд без единой строки кода.
Если в запросе нужно не только отобразить, но и сгруппировать данные по дате без времени, используют функцию языка запросов:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ) КАК День,
СУММА(Продажи.Сумма) КАК Сумма
ИЗ
РегистрНакопления.Продажи КАК Продажи
СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ)
НАЧАЛОПЕРИОДА обнуляет время внутри значения даты, что важно для корректной группировки и соединений. Простое форматирование такого эффекта не даёт: строки отформатируются одинаково, но сгруппируются по разным секундам.
Дата без секунд в печатных формах и табличных документах
В макетах табличных документов формат задаётся в свойствах ячейки или параметра. Откройте свойства ячейки макета, найдите поле «Формат» и впишите ДЛФ=D или ДФ='dd.MM.yyyy HH:mm'. При заполнении параметра макета из кода дополнительное форматирование не потребуется — табличный документ применит шаблон сам.
Альтернатива — форматировать значение в коде до передачи в макет: Параметры.ДатаДокумента = Формат(Шапка.Дата, "ДЛФ=D"). Этот способ удобен, когда один и тот же макет используется с разными форматами в зависимости от условий. Минус — в ячейку попадает уже строка, а не дата, поэтому сортировка и вычисления по такой ячейке невозможны.
- 1Откройте макет табличного документа в конфигураторе
- 2Выделите ячейку с параметром даты и откройте палитру свойств
- 3В поле Формат введите ДЛФ=D или ДФ='dd.MM.yyyy HH:mm'
- 4Сохраните конфигурацию и сформируйте печатную форму
- 5Проверьте, что секунды не выводятся, а дата соответствует документу
Обрезка секунд в самом значении даты
Иногда нужно не отобразить, а получить дату с обнулёнными секундами — например, для записи в регистр или сравнения. Встроенной функции «обрезать до минут» нет, но задача решается арифметикой: дата в 1С — это число секунд, поэтому из значения можно вычесть остаток.
// Обнуление секунд в значении даты
ДатаБезСекунд = НачалоМинуты(ТекущаяДатаСеанса());
// НачалоМинуты доступна в модулях, в запросе — НАЧАЛОПЕРИОДА(Дата, МИНУТА)
Функция НачалоМинуты() возвращает ту же дату с нулевыми секундами. Для обнуления времени целиком используется НачалоДня(). Эти функции безопасны для данных, поскольку создают новое значение, а не изменяют исходное.
Проверка результата и ограничения
После настройки формата проверьте вывод на реальных данных: дата должна отображаться в нужном виде, а логика, зависящая от значения даты (отборы, сортировка, итоги), — работать как раньше. Если после изменения «сломалась» группировка отчёта, почти наверняка форматирование применили там, где требовалась НАЧАЛОПЕРИОДА.
Учтите ограничение: представление даты зависит от региональных настроек сеанса при использовании ДЛФ и пустой форматной строки. На разных компьютерах одна и та же дата может выводиться как 12.03.2026 или 03/12/2026. Для обменов, файлов и интеграций всегда задавайте явный шаблон ДФ, чтобы формат был предсказуемым.
Как проверить результат
Секунды отсутствуют, день-месяц-год корректны
Вместо месяца видны минуты — перепутаны M и m
Все записи за день собраны в одну строку
Несколько строк на один день — формат применён вместо НАЧАЛОПЕРИОДА
Сравниваются значения типа Дата
Сравниваются отформатированные строки — результат непредсказуем
Формат задан в свойствах ячейки или при заполнении параметра
Секунды видны — формат не задан ни в макете, ни в коде
Что важно запомнить
Секунды убираются форматированием: Формат(Дата, "ДФ='dd.MM.yyyy HH:mm'") для даты со временем и Формат(Дата, "ДЛФ=D") для даты без времени. В запросах и СКД формат задаётся в свойствах поля, а для группировок используется НАЧАЛОПЕРИОДА. Формат меняет только представление — само значение даты остаётся с точностью до секунды.
Частые вопросы
Как вывести только дату без времени в 1С?
Используйте Формат(Дата, "ДЛФ=D") — получите краткую дату вида 12.03.2026. Для длинного варианта с названием месяца подойдёт ДЛФ=DD. Оба варианта учитывают региональные настройки сеанса.
Почему вместо месяца выводятся минуты?
В шаблоне ДФ перепутан регистр букв: заглавная M означает месяц, строчная m — минуты. Проверьте строку формата и замените mm на MM в части даты.
Как убрать секунды в динамическом списке?
Откройте настройки динамического списка, выберите поле даты и задайте ему формат ДФ='dd.MM.yyyy HH:mm' в свойствах оформления. Изменять запрос списка для этого не требуется.
Изменит ли формат значение даты в базе?
Нет. Функция Формат и свойства формата полей меняют только текстовое представление при выводе. Значение в базе остаётся с точностью до секунды. Для обнуления секунд в самом значении используйте НачалоМинуты() или НАЧАЛОПЕРИОДА в запросе.
Как отформатировать дату в языке запросов?
В тексте запроса функции Формат нет — форматирование задаётся в свойствах поля в конструкторе запроса или СКД. Внутри запроса доступны только функции изменения значения: НАЧАЛОПЕРИОДА, КОНЕЦПЕРИОДА, ДОБАВИТЬКДАТЕ.
Что выбрать: ДФ или ДЛФ?
ДЛФ подходит для пользовательских сообщений и отчётов, где важны региональные настройки. ДФ — когда нужен точный шаблон: дата с минутами без секунд, нестандартные разделители, формат для обмена данными.