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

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

Как задать формат даты в 1С в коде

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

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

Чаще всего формат даты задают двумя способами: готовыми сокращениями вида «ДЛФ=D» (локальные форматы) или явным шаблоном вида «ДФ=dd.MM.yyyy». Первый вариант подстраивается под региональные настройки пользователя, второй даёт жёсткий, предсказуемый результат независимо от локали. Выбор зависит от задачи: для интерфейса обычно лучше локальный формат, для обмена данными и имен файлов — фиксированный шаблон.

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

Функция Формат(): базовый синтаксис

Основной инструмент — встроенная функция Формат(Значение, ФорматнаяСтрока). Первый параметр — само значение даты, второй — строка с описанием формата. Если форматную строку не указать, применяется формат по умолчанию, зависящий от региональных настроек информационной базы.

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

Строка1 = Формат(ДатаДокумента, "ДЛФ=D"); // 15.03.2026 (краткая дата)

Строка2 = Формат(ДатаДокумента, "ДЛФ=DD"); // 15 марта 2026 г.

Строка3 = Формат(ДатаДокумента, "ДФ=dd.MM.yyyy"); // явный шаблон

Строка4 = Формат(ДатаДокумента, "ДФ='дд.ММ.гггг ЧЧ:мм'");

Форматная строка может содержать несколько параметров через точку с запятой, например: "ДФ=dd.MM.yyyy; ДП='не указана'". Параметр ДП (дата пустая) задаёт текст, который будет выведен вместо пустой даты 01.01.0001 — это удобно, чтобы пользователь не видел техническое значение.

Результат функции — всегда строка. Если форматированное значение нужно записать обратно в реквизит типа «Дата», этого делать не следует: присвоение строки приведёт либо к ошибке преобразования, либо к потере данных. Формат применяют только в точке вывода.

Локальные форматы ДЛФ: когда дата подстраивается под пользователя

Параметр ДЛФ (локальный формат даты) принимает значения D (краткая дата), DD (длинная дата с названием месяца), DT (дата и время), T (только время). Конкретный вид зависит от региональных установок, поэтому один и тот же код у пользователей с разной локалью может выглядеть по-разному.

Формат(ДатаДокумента, "ДЛФ=DD");   // 15 марта 2026 г.

Формат(ДатаДокумента, "ДЛФ=DT"); // 15.03.2026 14:32:05

Формат(ДатаДокумента, "ДЛФ=T"); // 14:32:05

ДЛФ — правильный выбор для сообщений пользователю, заголовков и элементов интерфейса, потому что дата выглядит привычно для конкретного человека. Дополнительно можно управлять отображением времени параметром ДЛВ (для ДЛФ=DD): "ДЛФ=DD; ДЛВ=Нет" скроет пустое время, если оно не задано.

Ограничение подхода: результат нельзя использовать там, где нужна стабильность — в именах файлов, ключах соответствий, XML-документах обмена. На другом сервере или у другого пользователя строка получится иной, и сопоставление данных сломается.

Явные шаблоны ДФ: полный контроль над представлением

Параметр ДФ принимает шаблон из символов-подстановок. Основные: d/dd — день, M/MM — месяц, yy/yyyy — год, H/HH — часы, m/mm — минуты, s/ss — секунды, q — квартал, MMMM — название месяца. Регистр символов важен: MM — это месяц, а mm — минуты.

Формат(ДатаДокумента, "ДФ=yyyy-MM-dd");           // 2026-03-15 (ISO-стиль)

Формат(ДатаДокумента, "ДФ='год: yyyy, месяц: MM'"); // текст с литералами

Формат(ДатаДокумента, "ДФ=dd.MM.yy"); // 15.03.24

Формат(ДатаДокумента, "ДФ=HH:mm:ss"); // только время

Произвольный текст внутри шаблона заключается в одинарные кавычки, иначе символы могут быть интерпретированы как подстановки. Частая ошибка — написать "ДФ=dd MMMM yyyy г." без кавычек: буква «г» не является подстановкой и обычно выводится как есть, но полагаться на это не стоит, безопаснее писать "ДФ='dd MMMM yyyy г.'".

Фиксированные шаблоны обязательны при формировании имён файлов, выгрузок в форматы с жёсткой структурой (XML, JSON, CSV) и при сравнении строковых представлений дат. Здесь локальные форматы недопустимы.

bsl
СтрокаДляФайла = Формат(ТекущаяДатаСеанса(), "ДФ=yyyy-MM-dd_HH-mm-ss");

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

Элементы формы

Для поля ввода или надписи на управляемой форме формат задаётся свойством Формат — в палитре свойств или программно: Элементы.ДатаОтгрузки.Формат = "ДЛФ=D";. Это предпочтительный способ для интерфейса: реквизит остаётся типом «Дата», сортировка и редактирование работают корректно, меняется только отображение.

Запросы

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

СКД и динамические списки

В схеме компоновки данных формат поля задаётся на закладке «Наборы данных» в колонке «Оформление» или через параметры вывода: для нужного поля указывается форматная строка, например ДЛФ=D. Для динамического списка формат настраивается у колонки таблицы формы, а не в тексте запроса.

Маршрут решения

Как выбрать способ

Дата выводится пользователю в интерфейсе или сообщенииИспользуйте ДЛФ или свойство Формат элемента формы
Строка идёт в файл, обмен, имя файла или ключ сопоставленияИспользуйте фиксированный шаблон ДФ, например ДФ=yyyy-MM-dd
Нужно отформатировать дату в запросеНе форматируйте в запросе — верните дату и примените Формат() при обходе выборки или в СКД
Пустая дата не должна показываться как 01.01.0001Добавьте параметр ДП с текстом-заменой

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

В макетах табличных документов дату обычно выводят через параметр: Область.Параметры.ДатаДокумента = Формат(Шапка.Дата, "ДЛФ=DD");. Для официальных печатных форм чаще требуется длинный формат с названием месяца прописью — именно его даёт ДЛФ=DD при русской локали.

Для XML-обменов стандартом де-факто является представление yyyy-MM-dd или yyyy-MM-ddTHH:mm:ss. Его получают шаблоном "ДФ=yyyy-MM-dd" или, для полного соответствия ISO, функциями сериализации (ЗаписьXML сама сериализует дату корректно, если записывать значение типа «Дата», а не строку).

Обратное преобразование строки в дату выполняется функцией Дата() с жёстким форматом аргументов — Дата("20260315") или Дата(2026, 3, 15). Функция Дата() не понимает произвольные строки вида «15.03.2026», поэтому при разборе внешних данных строку приходится предварительно разбирать вручную или через XMLЗначение.

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

Самая частая ошибка — путаница MM и mm: вместо «15.03.2026 14:32» получается «15.32.2026 14:03», где месяц и минуты поменялись местами. Вторая — забытые одинарные кавычки вокруг литералов в шаблоне. Третья — ожидание, что формат в запросе сработает: запрос всегда возвращает «сырую» дату.

Отдельная группа проблем — пустая дата. Значение '00010101' по умолчанию выводится как «01.01.0001 0:00:00», что выглядит для пользователя как мусор. Добавление параметра ДП решает вопрос: Формат(Дата, "ДЛФ=D; ДП='—'").

Проверить результат проще всего через окно «Вычислить выражение» (Shift+F9) в отладчике: введите Формат(ТекущаяДатаСеанса(), "ваш формат") и посмотрите строку. Для кода в обработках полезно временно выводить результат через Сообщить() до включения форматирования в рабочую логику.

Типичные ошибки
01
Перепутаны MM и mm — месяц и минуты меняются местами в выводе
02
Литералы в шаблоне без одинарных кавычек — символы трактуются как подстановки
03
Попытка отформатировать дату прямо в тексте запроса — запрос не поддерживает функцию Формат
04
Использование ДЛФ для обмена данными — строка зависит от локали и ломает сопоставление
05
Пустая дата выводится как 01.01.0001 — не задан параметр ДП
Контрольные точки

Как проверить результат

Строка даты в сообщении или печатной форме
Норма

День, месяц и время стоят на своих местах, формат читаем

Тревожный признак

Месяц равен минутам или год выводится как 24 — перепутаны символы шаблона

Строка для имени файла или обмена
Норма

Формат стабилен при любых региональных настройках (yyyy-MM-dd)

Тревожный признак

Строка содержит название месяца или разделители локали

Пустая дата в выводе
Норма

Показывается заданный текст-заменитель или пусто

Тревожный признак

Отображается 01.01.0001

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

Как вывести дату прописью, например «15 марта 2026 г.»?

Используйте локальный длинный формат: Формат(Дата, "ДЛФ=DD"). При русских региональных настройках результат будет именно в таком виде. Если нужен гарантированный вид независимо от локали, используйте шаблон "ДФ='dd MMMM yyyy г.'".

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

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

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

Нет, в языке запросов нет функции форматирования. Запрос возвращает значение типа «Дата», а формат применяют при обходе выборки функцией Формат() или в настройках поля СКД через свойство оформления.

Как преобразовать строку «15.03.2026» обратно в дату?

Функция Дата() такую строку не поймёт — она принимает формат «ггггММдд» или числовые аргументы. Разберите строку через СтрРазделить() и соберите Дата(Год, Месяц, День), либо используйте XMLЗначение(Тип("Дата"), Строка) для строки вида «2026-03-15».

Почему Формат() выдаёт дату не в том виде, что у коллеги?

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

Как вывести только месяц и год, например «март 2026»?

Шаблоном: Формат(Дата, "ДФ='MMMM yyyy'"). Четырёхбуквенное MMMM даёт название месяца, yyyy — год. Обратите внимание на одинарные кавычки вокруг всего шаблона с пробелом.

Итог

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

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