Работа с Системой компоновки данных (СКД) в 1С часто преподносит сюрпризы, особенно когда дело касается визуального отображения данных. Типичная ситуация: программист задает формат даты в наборе данных, но отчет упорно продолжает выводить дату вместе с временем (00:00:00 или фактическое время документа). В этой статье мы подробно разберем, почему так происходит, и рассмотрим все доступные способы исправления этой ситуации, от простых настроек оформления до модификации текста запроса.
Прежде чем приступать к исправлению, давайте проанализируем, почему стандартное указание формата в колонке Оформление на вкладке Наборы данных может не работать. В СКД существует жесткая иерархия настроек. Если формат задан в наборе данных, но при этом в настройках самого отчета (на нижней вкладке «Настройки») для этого же поля или всей группировки определено Условное оформление, то приоритет будет у последнего.
Также стоит учитывать кэширование настроек пользователем. Если вы уже запускали отчет в режиме «1С:Предприятие», платформа могла сохранить настройки варианта отчета. Даже если вы изменили формат в конфигураторе, старые настройки в базе данных пользователя перекроют ваши изменения. В таком случае помогает сброс настроек отчета на стандартные.
Рассмотрим самый первый и очевидный шаг. Перейдем на вкладку Наборы данных нашего отчета СКД. Найдем нужное поле с типом Дата. В колонке Оформление нажмем на кнопку выбора (три точки). В открывшемся окне найдем параметр Формат.
Для вывода даты без времени нам необходимо прописать форматную строку. Разберем по шагам, как это сделать правильно:
ДФ=dd.MM.yyyy (для числового представления) или более сложные варианты.Если вам нужно получить специфический вид, например, «19 мая 2026г.», проанализируем структуру форматной строки. Она должна выглядеть так: ДФ='дд ММММ гггг"г."'. Обратите внимание на использование одинарных и двойных кавычек — это критически важно для того, чтобы символ «г» воспринимался как текст, а не как часть кода года.
Иногда система игнорирует оформление, если тип поля определен как Дата, но с составом Дата и время. Попробуем изменить это в колонке Тип значения набора данных:
Тип значения.Дата.Состав даты и выберите значение Дата.Это подскажет системе, что временная составляющая не имеет значения для данного поля. Однако помните, что это не всегда гарантирует визуальное отсутствие нулей времени, если включены системные настройки оформления.
Этот метод считается одним из самых надежных. В СКД у каждого поля есть колонка Выражение представления. Она позволяет описать на языке выражений СКД, как именно данные должны выводиться на экран, не меняя при этом само значение (что важно для сортировки и расчетов).
Пропишем в этой колонке следующую конструкцию:
Формат(ИмяВашегоПоля, "ДФ=dd.MM.yyyy")
Преимущество этого метода в том, что СКД применит эту функцию непосредственно перед выводом текста в ячейку. При этом само поле в памяти останется типом Дата, что позволит пользователю правильно сортировать данные или использовать их в фильтрах.
Если визуальные методы не помогают (например, при работе с внешними наборами данных или сложными регистрами), выясним причину на уровне получения данных. Мы можем «очистить» дату прямо в тексте запроса. Рассмотрим пример:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ) КАК ДатаДокумента
ИЗ
РегистрНакопления.Продажи КАК Продажи
Функция НАЧАЛОПЕРИОДА с параметром ДЕНЬ установит время в 00:00:00. Чтобы окончательно убедиться, что тип данных будет чистой датой, можно использовать конструкцию ВЫРАЗИТЬ:
ВЫБРАТЬ
ВЫРАЗИТЬ(НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ) КАК ДАТА) КАК ДатаБезВремени
ИЗ
РегистрНакопления.Продажи КАК Продажи
Если вы не хотите менять основной запрос, воспользуемся вкладкой Вычисляемые поля. Создадим новое поле, назовем его, например, ДатаДляВывода.
Выражение укажите НАЧАЛОПЕРИОДА(Дата, "ДЕНЬ").Оформление для этого вычисляемого поля задайте нужный формат даты.Иногда помогает простое переименование поля. Как было замечено в обсуждении, если поле называется стандартно (например, Дата), СКД может применять к нему встроенные алгоритмы. Попробуйте дать полю уникальный псевдоним.
Если ничего из вышеперечисленного не сработало на уровне схемы, перейдем к «тяжелой артиллерии» — настройкам на уровне варианта отчета. Разберем ситуацию:
Оформление установите нужный Формат.Оформляемые поля выберите вашу дату.Этот метод перекрывает почти все настройки, заданные на уровне набора данных. Если и здесь формат не применился, значит, в поле попадает не тип Дата, а Строка. Проверьте это, проанализировав входящие данные в консоли запросов.
Проанализируем ситуацию с полями типа Период. Если вы вытягиваете данные из виртуальных таблиц регистров, поле Период часто имеет специальную роль. В колонке Роль набора данных может быть указано Период с дополнительными свойствами. СКД обрабатывает такие поля специфически. Чтобы формат применился гарантированно, попробуйте очистить содержимое колонки Роль для этого поля (если это не нарушит логику иерархии периодов в отчете).
В завершение подчеркнем: если вы меняете настройки в конфигураторе, а в режиме пользователя ничего не происходит — обязательно выполните команду «Установить стандартные настройки» в меню «Еще» формы отчета. Это самая частая причина мнимой неработоспособности кода.