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

Разработка и Конфигурация · 10 мин

Как отформатировать дату в 1С

Как отформатировать дату в 1С: функция Формат(), параметры ДФ и ДЛФ, шаблоны вывода, форматная строка в полях формы и типичные ошибки при работе с датами.

Задача вывести дату в нужном виде возникает в 1С постоянно: в печатных формах, отчётах, наименованиях документов, сообщениях пользователю и при обмене данными. По умолчанию платформа показывает дату в формате, заданном региональными настройками информационной базы, но на практике этого редко бывает достаточно — где-то нужен вид «01.03.2026», где-то «1 марта 2026 г.», а где-то дата с временем до секунд.

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

Как работает функция Формат() для дат

Функция имеет синтаксис Формат(Значение, ФорматнаяСтрока). Первый параметр — само значение типа Дата, второй — строка с параметрами форматирования. Для дат используются два ключевых параметра: ДФ (свободный шаблон) и ДЛФ (предопределённый локальный формат).

Простейший пример:

ДатаДокумента = ТекущаяДатаСеанса();

СтрокаДаты = Формат(ДатаДокумента, "ДФ=dd.MM.yyyy");

// Результат: "01.03.2026"

Если форматная строка не указана, платформа применяет формат по умолчанию из региональных настроек. Это важно: один и тот же код может вывести «01.03.2026» на одной базе и «03/01/2026» на другой, если администратор изменил региональные установки. Поэтому в прикладном коде формат лучше указывать явно.

Функция возвращает строку, а не дату. Это значит, что результат нельзя сравнивать как дату или использовать в арифметике дат — сначала форматируйте, только потом выводите.

Шаблоны параметра ДФ: символы и готовые примеры

Параметр ДФ строится из символов-подстановок. Регистр букв значения не имеет, но количество символов определяет вид вывода: например, MM — месяц двумя цифрами, а MMMM — полное название месяца.

СимволЗначениеПример вывода
d / ddДень месяца без нуля / с ведущим нулём1 / 01
MMМесяц двумя цифрами03
MMM / MMMMМесяц сокращённо / полностьюмар / марта
yy / yyyyГод двумя / четырьмя цифрами24 / 2026
HHЧасы (24-часовой формат)14
mm / ssМинуты / секунды05 / 09
qКвартал1

Разделители (точки, пробелы, двоеточия) вставляются в шаблон как обычные символы. Если нужно вывести слово, которое совпадает с символами шаблона, его заключают в кавычки внутри строки.

Формат(Дата, "ДФ='дд.MM.yyyy'");       // "01.03.2026"

Формат(Дата, "ДФ='yyyy-MM-dd'"); // "2026-03-01" (для обмена)

Формат(Дата, "ДФ='dd.MM.yyyy HH:mm:ss'"); // "01.03.2026 14:05:09"

Формат(Дата, "ДФ='dd MMMM yyyy'"); // "01 марта 2026"

1c
Сообщить(Формат(ТекущаяДатаСеанса(), "ДФ='dd.MM.yyyy ЧЧ:мм:сс'"));

Параметр ДЛФ: дата прописью и локальные форматы

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

Основные значения:

  • ДЛФ=D — полная дата: «1 марта 2026 г.»;
  • ДЛФ=DD — длинная дата с днём недели: «понедельник, 1 марта 2026 г.» (вид зависит от версии платформы и локали);
  • ДЛФ=T — только время;
  • ДЛФ=DT — дата со временем.
Формат(Дата, "ДЛФ=D");   // "1 марта 2026 г."

Формат(Дата, "ДЛФ=DT"); // дата и время в локальном виде

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

Форматирование даты в полях форм и отчётах без кода

Часто код писать не нужно: у полей ввода, надписей, колонок таблиц и ячеек макетов есть свойство «Формат». Оно задаётся в конфигураторе или в палитре свойств управляемой формы и содержит ту же форматную строку, что и функция Формат().

Типовой сценарий: на форме документа есть реквизит «ДатаОплаты», и его нужно показывать как «01.03.2026». Достаточно открыть свойства поля, найти строку «Формат» и ввести ДФ=dd.MM.yyyy. Платформа сама применит формат при отображении, а при вводе пользователем — распарсит значение обратно в дату.

В запросах и СКД форматирование на уровне кода обычно не требуется: в схеме компоновки данных у поля есть параметр «Оформление → Формат», где задаётся та же строка. Это правильнее, чем превращать дату в строку в запросе, — отчёт сохраняет возможность сортировки и группировки по реальной дате.

Как задать формат поля на форме
  1. 1
    Откройте форму в конфигураторе и выделите нужное поле
  2. 2
    В палитре свойств найдите свойство «Формат»
  3. 3
    Введите форматную строку, например ДФ=dd.MM.yyyy
  4. 4
    Сохраните и проверьте отображение в режиме Предприятие
  5. 5
    Проверьте ввод: убедитесь, что платформа корректно распознаёт введённую дату

Типичные сценарии: печатные формы, наименования, обмен данными

Дата в печатной форме документа

В макетах табличных документов параметры с типом Дата выводятся по формату ячейки. Если ячейке задан формат ДЛФ=D, выражение [ДатаДокумента] напечатается как «1 марта 2026 г.» без единой строки кода. Если формат не задан, применяется региональный по умолчанию — и в разных базах печатная форма может выглядеть по-разному.

Дата в строке сообщения или наименовании

При конкатенации дата автоматически преобразуется в строку в формате по умолчанию. Чтобы результат был предсказуемым, форматируйте явно:

Текст = "Акт сверки от " + Формат(ДатаАкта, "ДЛФ=D");

Дата для обмена и интеграций

При выгрузке в файлы и веб-сервисы используйте строгий машиночитаемый шаблон — обычно ISO-вид yyyy-MM-dd или yyyy-MM-ddTHH:mm:ss. Никогда не передавайте дату в «человеческом» формате ДЛФ: принимающая система не сможет надёжно её разобрать.

Что выбрать

ДФ с явным шаблоном

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

ДЛФ

Локализованный вид с правильными падежами; идеален для печатных форм и интерфейса. Вид зависит от настроек сеанса.

Свойство «Формат» поля

Без кода, работает и на ввод; применимо только к элементам форм, макетов и СКД.

Проверка результата и типичные ошибки

После внедрения форматирования проверьте результат на реальных данных: пустой датой, датой с временем, датой на границе месяца (например, 1-е число, где важен ведущий нуль). Пустая дата '00010101' в большинстве шаблонов выводится как «01.01.0001» — в интерфейсе это выглядит как ошибка, поэтому перед выводом стоит проверять ЗначениеЗаполнено(Дата).

Типичные ошибки
01
Смешение mm и MM: mm — это минуты, MM — месяц. Шаблон «dd.mm.yyyy» выведет вместо месяца минуты
02
Вывод пустой даты без проверки: пользователь видит «01.01.0001» в печатной форме
03
Форматирование даты в строку до сортировки или сравнения: строки сортируются по алфавиту, а не по хронологии
04
Использование ДЛФ в обмене данными: принимающая система не разбирает дату прописью
05
Отсутствие явного формата в коде: вид даты меняется при смене региональных настроек базы

Отдельная ловушка — преобразование строки обратно в дату. Функции Дата() из строки в общем случае нет; для разбора используют Дата(Год, Месяц, День) с предварительным извлечением частей строки или стандартные механизмы обмена. Поэтому строковое представление всегда считайте «односторонним»: сначала вся логика с типом Дата, форматирование — в самом конце.

Итог

Что важно запомнить

Используйте Формат(Дата, "ДФ=dd.MM.yyyy") для точного шаблона и ДЛФ=D для даты прописью; в формах и СКД задавайте свойство «Формат» без кода; проверяйте пустые даты и не путайте MM (месяц) с mm (минуты).

Частые вопросы

Как вывести дату без времени, если в реквизите хранится дата с временем?

Примените формат, в котором нет компонентов времени: Формат(Дата, "ДФ=dd.MM.yyyy"). Само значение при этом не изменится — обрежется только отображение. Если нужно усечь и само значение, используйте НачалоДня(Дата).

Почему Формат() выводит минуты вместо месяца?

Потому что в шаблоне использованы строчные mm — это минуты. Месяц обозначается заглавными MM. Правильный шаблон: ДФ=dd.MM.yyyy.

Как вывести дату вида «1 марта 2026 г.» в печатной форме?

Используйте Формат(Дата, "ДЛФ=D") в коде либо задайте формат ДЛФ=D в свойствах ячейки макета. Платформа сама подставит название месяца в нужном падеже.

Зависит ли результат Формат() от настроек пользователя?

Шаблон ДФ с явными символами — нет, он выдаст одинаковый результат везде. А вот формат по умолчанию (без параметров) и ДЛФ зависят от региональных настроек сеанса и языка интерфейса.

Как преобразовать отформатированную строку обратно в дату?

Универсальной функции разбора строки в дату во встроенном языке нет. Обычно выделяют части строки функциями Лев(), Сред(), Прав() и собирают дату через Дата(Год, Месяц, День), либо используют форматы обмена (XML, JSON), где дата сериализуется и восстанавливается автоматически.

Можно ли задать формат даты в запросе?

Функции форматирования в языке запросов нет, и превращать дату в строку в запросе не стоит — потеряется сортировка и группировка. Вместо этого задайте формат в настройках СКД (Оформление поля) или при выводе результата.