К статье
Практический материал

Разработка и Конфигурация · 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», когда вместо месяца подставляются минуты. Если в шаблоне есть пробелы или разделители, весь шаблон удобно заключать в одинарные кавычки внутри строки.

1c
СтрокаБезСекунд = Формат(ТекущаяДатаСеанса(), "ДФ='dd.MM.yyyy HH:mm'"

Вывод даты без времени через ДЛФ

Если время не нужно вовсе, проще использовать конструкцию ДЛФ — локальный формат даты. Она учитывает региональные настройки пользователя и не требует ручного шаблона. Значение «D» даёт краткую дату (12.03.2026), «DD» — длинную с названием месяца и днём недели в зависимости от настроек.

// Краткая дата без времени

Сообщить(Формат(Документ.Дата, "ДЛФ=D"));

// Длинная дата: 12 марта 2026 г.

Сообщить(Формат(Документ.Дата, "ДЛФ=DD"));

ДЛФ удобен в пользовательских сообщениях и отчётах, где важно соответствие региональным настройкам. Недостаток — меньше контроля: нельзя, например, вывести дату с минутами, но без секунд. Для такого смешанного формата подходит только ДФ.

Сравнение вариантов

ДФ=dd.MM.yyyy

Полный контроль шаблона, подходит для печатных форм и обменов. Требует ручного задания всех символов.

ДЛФ=D

Краткая дата по региональным настройкам, минимум кода. Не позволяет вывести часы и минуты без секунд.

ДФ='dd.MM.yyyy HH:mm'

Дата и время без секунд. Единственный простой способ получить минуты без секунд.

Формат поля в СКД/запросе

Без изменения кода, задаётся в конфигураторе. Действует только внутри конкретного отчёта или поля.

Формат даты в запросе и СКД

В запросах и схемах компоновки данных форматирование кодом не требуется — формат задаётся в свойствах поля. В конструкторе запроса или в настройках СКД у поля даты есть свойство «Формат», куда вписывается та же строка: ДФ='dd.MM.yyyy HH:mm' или ДЛФ=D. Отчёт выведет дату без секунд без единой строки кода.

Если в запросе нужно не только отобразить, но и сгруппировать данные по дате без времени, используют функцию языка запросов:

ВЫБРАТЬ

НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ) КАК День,

СУММА(Продажи.Сумма) КАК Сумма

ИЗ

РегистрНакопления.Продажи КАК Продажи

СГРУППИРОВАТЬ ПО

НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ)

НАЧАЛОПЕРИОДА обнуляет время внутри значения даты, что важно для корректной группировки и соединений. Простое форматирование такого эффекта не даёт: строки отформатируются одинаково, но сгруппируются по разным секундам.

Дата без секунд в печатных формах и табличных документах

В макетах табличных документов формат задаётся в свойствах ячейки или параметра. Откройте свойства ячейки макета, найдите поле «Формат» и впишите ДЛФ=D или ДФ='dd.MM.yyyy HH:mm'. При заполнении параметра макета из кода дополнительное форматирование не потребуется — табличный документ применит шаблон сам.

Альтернатива — форматировать значение в коде до передачи в макет: Параметры.ДатаДокумента = Формат(Шапка.Дата, "ДЛФ=D"). Этот способ удобен, когда один и тот же макет используется с разными форматами в зависимости от условий. Минус — в ячейку попадает уже строка, а не дата, поэтому сортировка и вычисления по такой ячейке невозможны.

Порядок действий для печатной формы
  1. 1
    Откройте макет табличного документа в конфигураторе
  2. 2
    Выделите ячейку с параметром даты и откройте палитру свойств
  3. 3
    В поле Формат введите ДЛФ=D или ДФ='dd.MM.yyyy HH:mm'
  4. 4
    Сохраните конфигурацию и сформируйте печатную форму
  5. 5
    Проверьте, что секунды не выводятся, а дата соответствует документу

Обрезка секунд в самом значении даты

Иногда нужно не отобразить, а получить дату с обнулёнными секундами — например, для записи в регистр или сравнения. Встроенной функции «обрезать до минут» нет, но задача решается арифметикой: дата в 1С — это число секунд, поэтому из значения можно вычесть остаток.

// Обнуление секунд в значении даты

ДатаБезСекунд = НачалоМинуты(ТекущаяДатаСеанса());

// НачалоМинуты доступна в модулях, в запросе — НАЧАЛОПЕРИОДА(Дата, МИНУТА)

Функция НачалоМинуты() возвращает ту же дату с нулевыми секундами. Для обнуления времени целиком используется НачалоДня(). Эти функции безопасны для данных, поскольку создают новое значение, а не изменяют исходное.

Типичные ошибки
01
Перепутаны M и m в шаблоне ДФ: вместо месяца выводятся минуты, результат вида 12.35.2026
02
Форматирование даты в строку до сравнения: строки сравниваются лексикографически, и 09.01.2026 окажется «больше» 10.01.2026
03
Использование Формат вместо НАЧАЛОПЕРИОДА при группировке в запросе: записи с разным временем не объединяются
04
Попытка задать формат через ПреобразоватьВСтроку: Строка(Дата) игнорирует форматную строку, нужен именно Формат()

Проверка результата и ограничения

После настройки формата проверьте вывод на реальных данных: дата должна отображаться в нужном виде, а логика, зависящая от значения даты (отборы, сортировка, итоги), — работать как раньше. Если после изменения «сломалась» группировка отчёта, почти наверняка форматирование применили там, где требовалась НАЧАЛОПЕРИОДА.

Учтите ограничение: представление даты зависит от региональных настроек сеанса при использовании ДЛФ и пустой форматной строки. На разных компьютерах одна и та же дата может выводиться как 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' в свойствах оформления. Изменять запрос списка для этого не требуется.

Изменит ли формат значение даты в базе?

Нет. Функция Формат и свойства формата полей меняют только текстовое представление при выводе. Значение в базе остаётся с точностью до секунды. Для обнуления секунд в самом значении используйте НачалоМинуты() или НАЧАЛОПЕРИОДА в запросе.

Как отформатировать дату в языке запросов?

В тексте запроса функции Формат нет — форматирование задаётся в свойствах поля в конструкторе запроса или СКД. Внутри запроса доступны только функции изменения значения: НАЧАЛОПЕРИОДА, КОНЕЦПЕРИОДА, ДОБАВИТЬКДАТЕ.

Что выбрать: ДФ или ДЛФ?

ДЛФ подходит для пользовательских сообщений и отчётов, где важны региональные настройки. ДФ — когда нужен точный шаблон: дата с минутами без секунд, нестандартные разделители, формат для обмена данными.