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

Отчеты и Аналитика · 10 мин

Как в СКД 1С выразить дату как строку

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

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

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

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

Когда нужно преобразование даты в строку, а когда — только формат

Первое решение, которое нужно принять, — менять тип значения или только его отображение. Преобразование в строку оправдано, когда значение дальше используется как текст: конкатенация с другими полями («Период: 01.03.2026»), формирование ключа группировки вида «2026-03», выгрузка во внешние системы, где требуется конкретный строковый шаблон.

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

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

Как выбрать действие

Нужно склеить дату с текстом или сгруппировать по строковому представлению периодаИспользуйте вычисляемое поле с функцией Формат() — тип станет строкой
Нужно только красиво показать дату в отчётеЗадайте формат в настройках поля набора данных, тип «Дата» сохранится
Строка нужна уже на этапе запроса, до компоновкиПреобразуйте дату в запросе набора данных через ПОДСТРОКА и функции даты

Функция Формат() в вычисляемом поле СКД

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

Формат(Дата, "ДФ=dd.MM.yyyy")

Форматная строка в параметре ДФ управляет шаблоном: dd — день, MM — месяц, yyyy — год четырьмя цифрами, HH:mm:ss — время. Например, Формат(Дата, "ДФ='yyyy-MM'") даст строку вида «2026-03», удобную для группировки по месяцам в хронологическом порядке. Обратите внимание: внутри форматной строки литералы берутся в одинарные кавычки.

После добавления вычисляемого поля его нужно включить в выбранные поля настроек отчёта (закладка «Настройки» → «Выбранные поля») — иначе в результате оно не появится. Тип значения в этом поле будет «Строка», что видно в колонке «Тип значения» списка вычисляемых полей.

Формат поля без изменения типа

Когда тип «Дата» нужно сохранить, формат задаётся в свойствах поля. На закладке «Наборы данных» в списке полей выделите нужное поле даты, найдите свойство «Формат» (в колонке «Оформление» или через палитру свойств поля) и укажите форматную строку, например ДФ=dd.MM.yyyy или ДЛФ=D для длинного представления даты.

Тот же результат достигается через настройки отчёта: «Настройки» → «Условное оформление» или оформление конкретного поля, где в параметре «Формат» задаётся та же строка. Пользователь отчёта может менять этот формат в режиме предприятия через «Изменить вариант», не трогая схему компоновки.

Преимущество подхода очевидно: сортировка, отборы по интервалу, группировки по периодам (неделя, месяц через поля-периоды СКД) продолжают работать корректно, потому что значение остаётся датой. Меняется только визуальное представление в момент вывода.

Функция Представление() и её ограничения

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

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

Преобразование даты в строку в запросе набора данных

Иногда строку нужно получить ещё в запросе — например, когда СКД соединяет наборы по строковому полю или когда дальнейшая логика построена на тексте. В языке запросов 1С функции Формат() нет, поэтому дату собирают из частей: ГОД(Дата), МЕСЯЦ(Дата), ДЕНЬ(Дата), дополняя нулями через ПОДСТРОКА и конкатенацию. Конструкция получается громоздкой, например для строки «2026-03-05»:

ВЫБОР КОГДА МЕСЯЦ(Т.Дата) < 10

ТОГДА ВЫРАЗИТЬ(ГОД(Т.Дата) КАК СТРОКА(4)) + "-0" + ВЫРАЗИТЬ(МЕСЯЦ(Т.Дата) КАК СТРОКА(1))

ИНАЧЕ ВЫРАЗИТЬ(ГОД(Т.Дата) КАК СТРОКА(4)) + "-" + ВЫРАЗИТЬ(МЕСЯЦ(Т.Дата) КАК СТРОКА(2))

КОНЕЦ

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

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

Формат() в вычисляемом поле

Гибкий шаблон, простая настройка. Минус: тип становится строкой, ломается сортировка по дате

Формат в свойствах поля

Тип «Дата» сохраняется, работают отборы и группировки. Подходит только для отображения

Представление()

Быстро и без параметров, но формат зависит от региональных настроек сеанса

Сборка в запросе

Строка доступна до компоновки, но запрос усложняется и теряет читаемость

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

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

Вторая ошибка — использование Формат() с неправильным регистром или пропущенным параметром ДФ: выражение Формат(Дата) вернёт представление по умолчанию с временем «0:00:00», что часто нежелательно. Третья — попытка сравнить в отборе поле типа «Дата» со строкой: компоновщик либо выдаст ошибку, либо молча приведёт типы с неожиданным результатом.

Типичные ошибки
01
Преобразование даты в строку ради отображения — ломается сортировка и отборы по периоду
02
Формат(Дата) без параметра ДФ — в строке появляется нежелательное время 0:00:00
03
Сравнение поля типа «Дата» со строкой в отборе — ошибка или пустой результат
04
Группировка по строке «MM.yyyy» — месяцы идут не в хронологическом порядке, нужен шаблон «yyyy-MM»

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

Контрольные точки

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

Отображение даты в отчёте
Норма

Строка соответствует заданному шаблону без лишнего времени

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

Появляется 0:00:00 или формат отличается от заданного

Сортировка по периоду
Норма

Строки идут в хронологическом порядке

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

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

Отбор по периоду
Норма

Отбор по дате отрабатывает и возвращает строки

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

Ошибка сравнения типов или пустой результат

FAQ

Почему Формат(Дата) выводит «01.03.2026 0:00:00» вместо только даты?

Потому что вызвана функция без параметра форматной строки — используется представление по умолчанию, включающее время. Укажите шаблон явно: Формат(Дата, "ДФ=dd.MM.yyyy"), и время исчезнет из результата.

Как сгруппировать данные по месяцам, чтобы они шли в правильном порядке?

Используйте вычисляемое поле с шаблоном, где год идёт первым: Формат(Дата, "ДФ='yyyy-MM'"). Строки вида «2026-01», «2026-02» сортируются лексикографически в хронологическом порядке. Альтернатива — группировать по стандартному полю-периоду СКД «Месяц», сохраняя тип даты.

Можно ли в отборе сравнить дату со строкой «01.03.2026»?

Напрямую — нет, типы несовместимы, и сравнение даст ошибку или пустой результат. В отборе используйте значение типа «Дата». Если сравнивать нужно именно строки, преобразуйте обе стороны: либо дату в строку через Формат() в вычисляемом поле, либо строку в дату на этапе запроса.

Чем Представление() отличается от Формат() в СКД?

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

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

Используйте форматную строку с длинным форматом даты: Формат(Дата, "ДЛФ=D"). Тот же параметр ДЛФ=D можно указать в свойстве «Формат» поля набора данных, если тип менять не нужно.

Вычисляемое поле с Формат() не появляется в отчёте. Что проверить?

Убедитесь, что поле добавлено в выбранные поля на закладке «Настройки» — вычисляемые поля не выводятся автоматически. Также проверьте, что в выражении используется реальное поле набора данных и нет опечатки в его имени.

Итог

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

Для строкового представления даты в СКД используйте Формат(Дата, "ДФ=шаблон") в вычисляемом поле. Если тип «Дата» нужно сохранить — задавайте формат в свойствах поля, а не преобразуйте значение. Представление() зависит от региональных настроек и не подходит для стабильных форматов.