При разработке отчетов на системе компоновки данных (СКД) часто возникает задача отобразить выбранный пользователем период прямо в заголовке печатной формы. Давайте разберем два основных способа, как это реализовать: с помощью настройки макетов и программным методом в модуле отчета.
Этот метод считается стандартным и не требует написания программного кода. Суть заключается в создании оформления области заголовка, куда система сама подставит значения параметров.
Отчет по остаткам за период с [Начало] по [Конец].Начало и Конец соответствующие выражения. Если в вашем отчете используется стандартный параметр Период типа СтандартныйПериод, то в качестве выражений укажите Период.ДатаНачала и Период.ДатаОкончания.Период доступен в Параметрах данных СКД.Система автоматически подставит значения, выбранные пользователем в форме отчета, при формировании результата.
Если вы хотите получить больше гибкости (например, добавлять условия или менять формат вывода в зависимости от ситуации), воспользуйтесь программным управлением. Для этого используется процедура ПриКомпоновкеРезультата в модуле отчета.
Рассмотрим пример реализации:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СписокЭлементов = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
ПериодОтчета = Неопределено;
Для каждого Элемент из СписокЭлементов Цикл
Если Элемент.Параметр = Новый ПараметрКомпоновкиДанных("Период") Тогда
ПериодОтчета = Элемент.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
Если ПериодОтчета <> Неопределено Тогда
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
ЗначениеПараметра.Значение = "Отчет по документу остатка с " + Формат(ПериодОтчета.ДатаНачала, "ДЛФ=Д") + " по " + Формат(ПериодОтчета.ДатаОкончания, "ДЛФ=Д");
ЗначениеПараметра.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Этот метод позволяет вам полностью контролировать строку заголовка, форматировать даты методом Формат и задавать логику вывода.
При работе с остатками и оборотами часто возникают ошибки дублирования данных (декартово произведение). Анализируя ваш запрос, мы можем дать следующие советы:
Остатки и Обороты без четких условий по периоду. Каждая строка остатков будет принудительно соединена с каждой записью движений, что приведет к неверным результатам.ОстаткиИОбороты, если конфигурация и задача это позволяют. Это оптимизирует работу системы и избавит вас от необходимости вручную соединять данные.&НачалоПериода и &КонецПериода был корректно заполнен в настройках параметров СКД, иначе отчет может вернуть пустой результат или ошибку выполнения.Помните, что для учебных целей полезно пробовать оба подхода: макеты позволяют быстро настроить вывод, а программный код — глубоко понять жизненный цикл формирования отчета в 1С.