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

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

Как добавить дату в заголовок отчета в 1С

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

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

Чаще всего задача сводится к одному из трех сценариев: вывести период отчета («за январь»), вывести дату формирования («сформирован 15.03») или вывести и то, и другое. Ниже разобраны все варианты — от настройки без программирования до изменения кода модуля объекта.

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

Определяем, как устроен отчет

Способ добавления даты зависит от технологии, на которой построен отчет. В современных конфигурациях (УТ 11, ERP, БП 3.0, ЗУП 3.1) подавляющее большинство отчетов построено на СКД. В старых конфигурациях и самописных решениях встречаются отчеты на обычном табличном документе с макетом.

Проверить просто: откройте конфигуратор, найдите отчет в дереве объектов и посмотрите его состав. Если у отчета есть «Основная схема компоновки данных» — это СКД. Если есть макет типа «Табличный документ» и формирование идет кодом через ТабличныйДокумент.Вывести() — это классическая схема с макетом.

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

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

Отчет на СКД, нужно просто показать период в заголовкеИспользуйте настройку заголовка в варианте отчета — без программирования
Отчет на СКД, нужна произвольная дата формированияДобавьте параметр в макет СКД или вычисляемое поле с ТекущаяДатаСеанса()
Отчет на макете табличного документаДобавьте параметр в область макета и заполните его перед выводом
Нужна дата во всех отчетах сразуВнесите изменение в общую процедуру формирования или общий макет

Выводим период в заголовок отчета на СКД без программирования

Для типовых отчетов на СКД самый быстрый путь — настройка варианта отчета прямо в режиме предприятия. Откройте отчет, перейдите в расширенные настройки (кнопка «Настройки» → «Расширенные» или «Еще» → «Изменить вариант отчета» в зависимости от конфигурации).

На закладке «Другие настройки» найдите параметр «Заголовок» (Title). Установите флажок использования и впишите текст с периодом, например: Продажи за период с 01.01 по 31.01. Период при этом придется обновлять вручную — это ограничение способа.

Заголовок через настройки варианта
  1. 1
    Откройте отчет в режиме 1С:Предприятие
  2. 2
    Нажмите «Настройки» и перейдите в расширенный режим
  3. 3
    Найдите параметр «Заголовок» на закладке «Другие настройки»
  4. 4
    Включите флажок и введите текст заголовка с периодом
  5. 5
    Сформируйте отчет и проверьте результат
  6. 6
    Сохраните вариант отчета, чтобы настройка не потерялась

Сохраните измененный вариант: «Еще» → «Сохранить вариант отчета». Тогда заголовок будет применяться при каждом открытии этого варианта, в том числе другими пользователями, если вариант общий.

Автоматическая дата через макет СКД

Чтобы дата подставлялась автоматически, откройте основную схему компоновки данных в конфигураторе и перейдите на закладку «Макеты». Создайте макет оформления или макет области для заголовка: добавьте макет типа «Заголовок» и в ячейке укажите параметр, например &ТекущаяДата.

В ячейке макета можно использовать выражение на встроенном языке СКД. Для даты формирования удобна функция ТекущаяДатаСеанса() в сочетании с Формат(). Пример заполнения параметра в модуле объекта отчета:

1c
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ТекущаяДата", Формат(ТекущаяДатаСеанса(), "ДЛФ=DD"));
КонецПроцедуры

Для периода отчета используйте значения стандартных параметров «НачалоПериода» и «КонецПериода» — их можно получить из настроек компоновщика и подставить в параметр заголовка тем же способом. Формат ДЛФ=DD выводит дату полностью с названием месяца, ДЛФ=D — короткую числовую форму.

Дата в заголовке отчета на макете табличного документа

Если отчет построен классическим способом, откройте макет отчета в конфигураторе. Найдите или создайте область «Шапка» (заголовок). В ячейке, где должна быть дата, установите свойство «Заполнение» в значение «Параметр» и задайте имя параметра, например ДатаФормирования.

Затем в модуле объекта отчета, перед выводом области, заполните параметр:

1c
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.ДатаФормирования = Формат(ТекущаяДатаСеанса(), "ДЛФ=DD");
ОбластьШапка.Параметры.ПериодОтчета = "с " + Формат(НачалоПериода, "ДЛФ=D") + " по " + Формат(КонецПериода, "ДЛФ=D");
ТабличныйДокумент.Вывести(ОбластьШапка);

Если дата должна выводиться на каждой странице при печати, используйте не область макета, а колонтитулы табличного документа: свойства ВерхнийКолонтитул и НижнийКолонтитул с текстом вроде &Дата — система подставит дату печати автоматически.

Проверка результата

После изменений сформируйте отчет и проверьте три вещи: дата отображается в нужном месте, формат соответствует требованиям (полный или краткий), при смене периода или перезапуске отчета дата обновляется корректно.

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

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

Заголовок в сформированном отчете
Норма

Дата или период видны и соответствуют ожиданиям

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

Вместо даты выводится имя параметра или пустая строка — параметр не заполнен

Смена периода отчета
Норма

Период в заголовке меняется автоматически

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

Заголовок показывает старый период — значит он статичный

Печатная форма
Норма

Дата есть на всех страницах при использовании колонтитула

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

Дата только на первой странице — нужен колонтитул, а не область

Формат даты
Норма

Читаемый формат, например «15 марта» или «15.03»

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

Дата со временем «15.03 14:32:05» — укажите ДЛФ в функции Формат()

Типичные ошибки и ограничения

Типичные ошибки
01
Параметр объявлен в макете, но не заполняется в коде — в отчете выводится имя параметра или пустота
02
Используется ТекущаяДата() в клиент-серверном режиме — возможны расхождения с серверным временем; правильнее ТекущаяДатаСеанса()
03
Заголовок задан статическим текстом в варианте отчета — при смене периода пользователь видит неверные даты
04
Изменение типового отчета в конфигурации без необходимости — объект снимается с полной поддержки, усложняются обновления
05
Формат даты не задан — выводится дата со временем, что загромождает заголовок

Отдельное ограничение касается внешних отчетов (.erf/.epf): если отчет подключен через механизм дополнительных отчетов и обработок, изменения в его модуле применяются только после замены файла в справочнике дополнительных отчетов, а не сразу после сохранения в конфигураторе.

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

Как вывести дату в формате «15 марта» без года?

Используйте функцию Формат с нужной строкой формата. Например, Формат(ТекущаяДатаСеанса(), "ДФ='dd MMMM'") выведет день и название месяца без года. Полный список символов формата есть в синтакс-помощнике по функции Формат.

Почему вместо даты в отчете выводится текст «&ТекущаяДата»?

Параметр объявлен в макете, но ему не присвоено значение. Проверьте, что в коде (или в настройках СКД) параметр с точно таким же именем заполняется до вывода области или формирования отчета. Имена чувствительны к опечаткам.

Можно ли добавить дату в заголовок типового отчета без конфигуратора?

Да, если достаточно статичного заголовка: откройте расширенные настройки варианта отчета, включите параметр «Заголовок» и впишите текст. Автоматическую подстановку текущей даты без изменения схемы или кода получить не удастся.

Как вывести дату на каждой странице печатной формы отчета?

Используйте колонтитулы табличного документа: установите свойство ВерхнийКолонтитул или НижнийКолонтитул и включите в текст шаблон &Дата — платформа подставит дату печати на каждой странице автоматически.

ТекущаяДата() или ТекущаяДатаСеанса() — что использовать?

В клиент-серверном режиме используйте ТекущаяДатаСеанса() — она возвращает время сервера и одинакова для всех пользователей. ТекущаяДата() на клиенте берет время компьютера пользователя, которое может быть неточным.

Дата формируется, но со временем «14:32:05». Как убрать время?

Примените форматирование: Формат(Дата, "ДЛФ=D") для короткой даты или "ДЛФ=DD" для полной. Без формата дата приводится к строке вместе со временем.

Итог

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

Сначала определите технологию отчета: СКД или макет табличного документа. Для СКД используйте настройку заголовка варианта или параметр макета с ТекущаяДатаСеанса(), для макета — параметр области, заполняемый в коде. Всегда форматируйте дату через Формат(), проверяйте обновление при смене периода и избегайте правки типовых объектов без необходимости.