Отчеты и Аналитика · 11 мин
Как вывести период в заголовок отчета 1С
Как вывести период в заголовок отчета 1С через СКД, параметры и макет. Примеры кода, типичные ошибки и способы для обычных и управляемых форм.
Пользователь, открывая отчет в 1С, ожидает увидеть в заголовке, за какой период сформированы данные: «за январь», «с 01.01 по 31.03» и тому подобное. Если период не выведен, печатная форма теряет смысл: по бумаге невозможно понять, к каким датам относятся цифры. Задача решается несколькими способами в зависимости от того, построен отчет на СКД (системе компоновки данных), на программном формировании табличного документа или на внешнем макете.
Ключевой принцип один: период хранится в параметрах отчета (обычно это «НачалоПериода» и «КонецПериода» либо единый параметр «Период» типа «СтандартныйПериод»), а в заголовок он попадает либо автоматически через настройки СКД, либо вручную — через макет и код. Ниже разобраны оба подхода с конкретными действиями и примерами.
Где хранится период отчета и почему он не виден в заголовке
В типовых и самописных отчетах период задается на форме как настройка. В СКД это параметры данных: либо пара «НачалоПериода» / «КонецПериода», либо один параметр типа «СтандартныйПериод». Сам факт заполнения параметра не означает, что он появится в заголовке: СКД выводит в шапку отчета только то, что явно разрешено в настройках.
Типовая причина «пропавшего» периода — в настройках отчета отключен вывод параметров данных или параметр «Заголовок» очищен. Вторая причина — отчет формируется программно, и разработчик просто не передал период в область заголовка макета. Третья — используется внешняя печатная форма, где заголовок захардкожен строкой без дат.
Способ 1. Вывести период через настройки СКД без кода
Если отчет построен на СКД, самый простой путь — показать параметры в шапке отчета штатными средствами. Откройте отчет, нажмите «Еще» → «Изменить вариант» (или «Настройки» → «Расширенные» в зависимости от конфигурации). На закладке «Параметры данных» убедитесь, что у параметров периода снят флажок «Ограничение доступности» не требуется, а в колонке «Включать в пользовательские настройки» стоит отметка.
Далее перейдите к параметру вывода «Заголовок»: он находится в настройках на закладке «Другие настройки» или в параметрах вывода. Впишите произвольный текст, например «Оборотно-сальдовая ведомость». Параллельно включите параметр вывода «Выводить параметры» — тогда под заголовком автоматически появится строка с периодом и другими отборами. При формировании отчета вы увидите шапку вида: название отчета, а под ним «Период: 01.01.2026 — 31.01.2026».
- 1Откройте отчет и перейдите в изменение варианта настроек
- 2Проверьте, что параметры периода заполнены и включены
- 3Найдите параметр вывода «Заголовок» и впишите название отчета
- 4Включите параметр вывода «Выводить параметры» или «Выводить отбор»
- 5Сформируйте отчет и проверьте, что период появился под заголовком
- 6Сохраните вариант отчета, чтобы настройка не потерялась
Способ 2. Подставить период в текст заголовка через выражение
Когда требуется не отдельная строка с параметрами, а период прямо внутри заголовка («Отчет по продажам за январь»), текст заголовка формируют выражением. В схеме компоновки данных на закладке «Настройки» в конфигураторе можно задать заголовок с использованием параметров, но чаще это делают программно при формировании.
В модуле объекта отчета используется событие «ПриКомпоновкеРезультата». В нем можно изменить значение параметра вывода «Заголовок» до формирования, подставив форматированные даты. Функция Формат() с параметром "ДЛФ=D" выводит дату в длинном формате: «1 января 2026 г.».
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
// Формируем заголовок с периодом
ПараметрНачало = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("НачалоПериода"));
ПараметрКонец = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("КонецПериода"));
ТекстЗаголовка = "Отчет по продажам за период с "
+ Формат(ПараметрНачало.Значение, "ДЛФ=D")
+ " по "
+ Формат(ПараметрКонец.Значение, "ДЛФ=D");
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Обратите внимание: если заголовок задан в самом макете компоновки, программная подстановка может конфликтовать с настройками. Надежнее формировать заголовок либо полностью в настройках, либо полностью в коде.
Способ 3. Период в заголовке самописного отчета через макет
Для отчетов, которые формируются вручную в табличный документ (без СКД), период выводится через параметр области макета. В конфигураторе создайте макет типа «Табличный документ», добавьте область «Заголовок» и в ячейке пропишите параметр, например [Заголовок]. В модуле отчета перед выводом области присвойте параметру нужный текст.
Функция СформироватьОтчет(НачалоПериода, КонецПериода) Экспорт
Макет = ПолучитьМакет("МакетОтчета");
ТабДок = Новый ТабличныйДокумент;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.Заголовок = "Анализ остатков за период с "
+ Формат(НачалоПериода, "ДЛФ=DD")
+ " по "
+ Формат(КонецПериода, "ДЛФ=DD");
ТабДок.Вывести(ОбластьЗаголовок);
// ... вывод данных отчета
Возврат ТабДок;
КонецФункции
Разница между "ДЛФ=D" и "ДЛФ=DD": первый вариант дает «1 января 2026 г.», второй — «01.01.2026». Для официальных печатных форм чаще используют короткий формат, для аналитических отчетов — длинный, он читается лучше.
Работа со стандартным периодом и красивое форматирование
Во многих отчетах вместо двух дат используется один параметр типа «СтандартныйПериод». У него есть свойства ДатаНачала и ДатаОкончания. Чтобы вывести его в заголовок, обращайтесь к этим свойствам:
ТекстЗаголовка = "Отчет за период: "
+ Формат(СтандартныйПериод.ДатаНачала, "ДЛФ=D")
+ " — "
+ Формат(СтандартныйПериод.ДатаОкончания, "ДЛФ=D");
Полезные приемы форматирования:
- Вывод только месяца и года: Формат(Дата, "ДФ='ММММ гггг'") — даст «январь 2026»;
- Квартал: вычисляется через Месяц(Дата) / 3 с округлением вверх, либо через начало и конец квартала функциями НачалоКвартала() и КонецКвартала();
- Проверка на пустой период: если даты не заполнены (01.01.0001), выводите «за весь период», иначе в заголовке появится бессмысленная дата.
Если Не ЗначениеЗаполнено(НачалоПериода) Тогда
ТекстПериода = "за весь период";
Иначе
ТекстПериода = "с " + Формат(НачалоПериода, "ДЛФ=D") + " по " + Формат(КонецПериода, "ДЛФ=D");
КонецЕсли;Типичные ошибки и как их проверить
Самая частая ошибка — в заголовок попадает дата конца периода с временем 23:59:59, и при форматировании без учета этого отчет «за январь» выглядит корректно, но если разработчик использовал КонецДня() неправильно, дата может уехать на следующие сутки. Всегда используйте КонецДня(КонецПериода) при передаче в запрос и Формат() при выводе — формат отсечет время.
Вторая ошибка — заголовок формируется до того, как пользователь изменил период в настройках. В СКД-отчетах это проявляется, когда текст заголовка зафиксирован в сохраненном варианте: пользователь меняет даты, а шапка остается старой. Решение — формировать заголовок в событии «ПриКомпоновкеРезультата», а не хранить его статичным.
Для проверки результата сформируйте отчет трижды: за один день, за месяц и без указания периода. В первом случае даты начала и конца должны совпадать, во втором — показывать границы месяца, в третьем — выводиться нейтральная фраза вместо пустых дат.
Как проверить результат
Даты совпадают с выбранными на форме отчета
Даты не меняются при смене настроек
В выборку входят документы последнего дня
Документы последнего дня отсутствуют
Выводится «за весь период»
Выводится 01.01.0001 или пустая строка
Что выбрать: настройки СКД или программный вывод
Сравнение вариантов
Подходит для типовых отчетов и быстрых доработок; не требует кода, но формат строки фиксированный
Полный контроль над текстом и форматом; требует доработки модуля и аккуратности с конфликтом настроек
Для самописных отчетов без СКД и печатных форм; максимальная гибкость оформления, но вся логика в коде
Если отчет типовой и задача — просто показать период, начинайте с настроек: это занимает пару минут и не требует доработки конфигурации. Если нужен красивый заголовок с месяцем прописью или логотипом — переходите к программному формированию. Для внешних печатных форм выбор один: макет и параметры области.
Что важно запомнить
Период в заголовок попадает из параметров отчета: в СКД — через настройки вывода, в самописных отчетах — через параметр области макета. Форматируйте даты функцией Формат(), обрабатывайте пустой период и формируйте заголовок в момент формирования, а не храните его статичным текстом.
Частые вопросы
Как вывести в заголовок только месяц и год, без конкретных дат?
Используйте произвольный формат функции Формат(): Формат(НачалоПериода, "ДФ='ММММ гггг'") вернет строку вида «январь 2026». Подставьте результат в текст заголовка, например «Отчет по реализации за январь 2026».
Почему в типовом отчете период в заголовке не обновляется после смены дат?
Скорее всего, в сохраненном варианте отчета заголовок зафиксирован текстом. Откройте «Изменить вариант», очистите параметр «Заголовок» или включите автоматический вывод параметров, затем сохраните вариант заново. Если отчет доработан программно, заголовок нужно формировать в событии «ПриКомпоновкеРезультата».
Можно ли вывести период в заголовок без доработки конфигурации?
Да, если отчет построен на СКД: пользовательские настройки позволяют включить вывод параметров и задать заголовок без изменения кода. Для отчетов, жестко запрограммированных без СКД, без доработки обойтись нельзя — потребуется внешняя обработка или изменение модуля.
Как вывести период в заголовок внешней печатной формы?
В модуле внешней обработки при формировании табличного документа получите область заголовка из макета и заполните ее параметр: Область.Параметры.Заголовок = "Акт за период с " + Формат(ДатаНачала, "ДЛФ=D"). Даты берите из реквизитов документа-основания или из параметров, переданных в обработку.
Что делать, если в заголовке появляется дата 01.01.0001?
Это признак незаполненного параметра периода. Перед формированием заголовка проверяйте значение функцией ЗначениеЗаполнено(): если дата пустая, подставляйте нейтральный текст «за весь период» или требуйте заполнения параметра через сообщение пользователю.
Как в заголовке указать квартал вместо точных дат?
Определите номер квартала выражением Цел((Месяц(Дата) - 1) / 3) + 1 и подставьте в строку: "Отчет за " + НомерКвартала + " квартал " + Формат(Дата, "ДФ=гггг"). Для границ выборки в запросе используйте НачалоКвартала() и КонецКвартала().