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

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

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

Способ 1: Использование макетов СКД

Этот метод считается стандартным и не требует написания программного кода. Суть заключается в создании оформления области заголовка, куда система сама подставит значения параметров.

  1. Перейдите на вкладку Макеты в конструкторе СКД.
  2. Добавьте новый макет оформления (выберите Заголовок).
  3. В ячейку макета введите текст, например: Отчет по остаткам за период с [Начало] по [Конец].
  4. В свойствах ячейки или в списке параметров макета укажите для параметров Начало и Конец соответствующие выражения. Если в вашем отчете используется стандартный параметр Период типа СтандартныйПериод, то в качестве выражений укажите Период.ДатаНачала и Период.ДатаОкончания.
  5. Убедитесь, что параметр Период доступен в Параметрах данных СКД.

Система автоматически подставит значения, выбранные пользователем в форме отчета, при формировании результата.

Способ 2: Программное управление заголовком

Если вы хотите получить больше гибкости (например, добавлять условия или менять формат вывода в зависимости от ситуации), воспользуйтесь программным управлением. Для этого используется процедура ПриКомпоновкеРезультата в модуле отчета.

Рассмотрим пример реализации:


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

Этот метод позволяет вам полностью контролировать строку заголовка, форматировать даты методом Формат и задавать логику вывода.

Важные рекомендации по запросам в СКД

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

  1. Избегайте соединения виртуальных таблиц Остатки и Обороты без четких условий по периоду. Каждая строка остатков будет принудительно соединена с каждой записью движений, что приведет к неверным результатам.
  2. Используйте виртуальную таблицу ОстаткиИОбороты, если конфигурация и задача это позволяют. Это оптимизирует работу системы и избавит вас от необходимости вручную соединять данные.
  3. Проверяйте, чтобы период в параметрах данных &НачалоПериода и &КонецПериода был корректно заполнен в настройках параметров СКД, иначе отчет может вернуть пустой результат или ошибку выполнения.

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

← На главную