При разработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются с ситуацией, когда для поля с типом Дата в шапке отчета при выводе примененных отборов значение выводится вместе со временем (например, «01.01.2024 0:00:00»), даже если в настройках типа указан состав даты «Дата». Попытки задать форматирование через условное оформление на вкладке «Настройки» или через выражение представления поля часто не дают нужного результата. Выясним причину такого поведения платформы и разберем надежные способы решения этой задачи.
Проанализируем механизм вывода информации в компоновщике. Настройки оформления, заданные на вкладке «Настройки» → «Условное оформление», применяются процессором вывода только к результирующим таблицам — детальным записям и группировкам. Служебная область шапки отчета, формируемая при включенном параметре Выводить отбор, строится отдельно на основе настроек самого набора данных.
Поле Выражение представления на вкладке наборов данных также отвечает исключительно за строковое отображение ячеек в теле отчета, но не передается в заголовок фильтра. Поэтому для изменения формата даты в заголовке отбора необходимо применить настройки на уровне схемы.
Разберем по шагам наиболее быстрое и правильное решение, задаваемое непосредственно в схеме компоновки данных:
ДатаИсполнения).Формат и откроем конструктор строки формата.ДЛФ=D (длинный формат даты без времени), либо зададим явный формат ДФ=dd.MM.yyyy.Именно оформление, заданное на уровне описания полей набора данных схемы, считывается стандартным механизмом платформы при формировании текстового описания отбора в шапке отчета.
Посмотрим на второй параметр, который предотвращает появление времени не только в заголовке, но и при интерактивном выборе значения пользователем на форме:
ДФ=dd.MM.yyyy или выберем ДЛФ=D.После этой настройки в элементе управления отбором время будет скрыто как в поле ввода, так и в итоговом представлении фильтра.
Рассмотрим альтернативный вариант на случай, если требуется полностью контролировать внешний вид шапки отчета или стандартный вывод отборов по каким-либо причинам не подходит. В этом случае мы отключаем стандартный вывод отбора и формируем заголовок программно.
ПриКомпоновкеРезультата.Заголовок:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ТекстОтбора = "";
Для Каждого Элемент Из Настройки.Отбор.Элементы Цикл
Если Не Элемент.Использование Тогда
Продолжить;
КонецЕсли;
Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаИсполнения") Тогда
ПредставлениеДаты = Формат(Элемент.ПравоеЗначение, "ДФ=dd.MM.yyyy");
ТекстОтбора = ТекстОтбора + "Дата исполнения: " + ПредставлениеДаты + "; ";
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(ТекстОтбора) Тогда
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("Заголовок", "Отчет (Отбор: " + ТекстОтбора + ")");
КонецЕсли;
КонецПроцедуры
Такой подход дает максимальную гибкость, если в отчете требуется нестандартное оформление реквизитов фильтрации.