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

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

1С СКД: как установить параметр отчёта

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

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

В СКД параметр можно установить тремя способами: на закладке «Параметры» схемы компоновки в конфигураторе, через настройки отчёта в режиме предприятия и программно — из кода на встроенном языке. Каждый способ решает свою задачу: первый определяет само существование параметра и его поведение, второй даёт гибкость пользователю, третий нужен при вызове отчёта из обработок, кнопок форм и регламентных заданий.

Ниже разобраны все три подхода с точными действиями, условиями выбора, типичными ошибками и способами проверки, что параметр действительно влияет на результат.

Где в схеме компоновки данных задаются параметры

Откройте схему компоновки данных отчёта (в конфигураторе: макет отчёта типа «Схема компоновки данных» или кнопка «Открыть схему компоновки данных») и перейдите на закладку «Параметры». Здесь отображаются две группы: параметры, объявленные в запросе вручную, и параметры виртуальных таблиц, которые СКД добавляет автоматически (например, периоды регистра накопления).

Чтобы параметр появился в списке, его нужно сначала использовать в тексте запроса на закладке «Наборы данных». Параметр в запросе пишется через амперсанд: &НачалоПериода, &Организация. После обновления текста запроса СКД сама подтянет параметр на закладку «Параметры», где для него задаются свойства.

Если параметр нужен только для выражений и отборов, но не участвует в запросе напрямую, его добавляют кнопкой «Добавить» на закладке «Параметры» и затем используют в вычисляемых полях или отборах настроек.

Как настроить свойства параметра в конструкторе

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

Отдельно важны флаги поведения. «Включать в доступные поля» делает параметр видимым в настройках отчёта. «Ограничение доступности» скрывает параметр от пользователя — он остаётся служебным и задаётся только программно. «Выражение» позволяет вычислить значение формулой, например &НачалоПериода + 86400 для сдвига даты на сутки.

Для параметров типа «Дата» обратите внимание на колонку «Доступные значения» и состав даты: если нужен только день без времени, выберите состав «Дата», иначе пользователь сможет ввести время, и сравнение в запросе может дать неожиданный результат из-за секунд.

Установка параметра в режиме предприятия

В пользовательском режиме параметры открываются через кнопку «Настройки» (или «Ещё → Изменить вариант» в типовых отчётах на управляемых формах). На закладке «Параметры» видны все доступные параметры: чтобы значение вступило в силу, нужно заполнить поле и убедиться, что установлен флажок использования слева от имени параметра.

Частая ситуация: пользователь ввёл дату, но отчёт вывел данные за другой период. Причина почти всегда в снятом флажке использования — значение есть, но СКД его игнорирует. Это же правило действует и при программной установке параметра.

Если отчёт построен на расширенной форме с быстрыми настройками, часть параметров выведена прямо на панель формы. Их изменение эквивалентно правке в окне настроек — это те же элементы коллекции ПараметрыДанных.

Как установить параметр программно из кода

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

Настройки = Отчет.КомпоновщикНастроек.Настройки;

ПараметрОрганизация = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(

Новый ПараметрКомпоновкиДанных("Организация"));

Если ПараметрОрганизация <> Неопределено Тогда

ПараметрОрганизация.Значение = ТекущаяОрганизация;

ПараметрОрганизация.Использование = Истина;

КонецЕсли;

Три момента, которые регулярно упускают. Во-первых, параметр ищется по объекту ПараметрКомпоновкиДанных, а не по строке с именем — передача строки вернёт Неопределено. Во-вторых, без строки Использование = Истина значение не попадёт в запрос. В-третьих, если настройки загружаются из сохранённого варианта, устанавливать параметры нужно после загрузки варианта, иначе они будут перезаписаны.

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

Порядок программной установки параметра
  1. 1
    Получите объект настроек: Отчет.КомпоновщикНастроек.Настройки или пользовательские настройки варианта
  2. 2
    Найдите параметр методом НайтиЗначениеПараметра с объектом ПараметрКомпоновкиДанных
  3. 3
    Проверьте, что параметр найден (результат не равен Неопределено)
  4. 4
    Присвойте свойство Значение нужного типа
  5. 5
    Установите Использование = Истина
  6. 6
    Сформируйте отчёт и проверьте, что данные отфильтрованы по параметру

Типы параметров и особенности их значений

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

Даты требуют внимания к границам периода. Дата в 1С хранится с точностью до секунды, поэтому условие Период <= &КонецПериода при значении «31.01.2026 0:00:00» отсечёт все записи за 31 января после полуночи. Правильные приёмы: использовать КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) в запросе или передавать конец дня из кода функцией КонецДня().

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

Способы установки параметра

В конструкторе СКД

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

В настройках отчёта

Подходит для интерактивной работы пользователя. Ограничение: требует ручного действия и включённого флага использования.

Программно из кода

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

Типичные ошибки и как их диагностировать

Самая частая ошибка — параметр установлен, но отчёт его не учитывает. Проверьте по порядку: включён ли флаг использования; используется ли параметр в тексте запроса или отборе; не перезаписывается ли значение при загрузке варианта настроек; совпадает ли тип значения с типом параметра.

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

Третья группа — ошибки исполнения запроса вида «Неверные параметры в операции сравнения». Она возникает, когда параметру присвоено значение несовместимого типа, например строка вместо ссылки. Лечится явным приведением типа в коде или ограничением типа в свойствах параметра.

Типичные ошибки
01
Установлено Значение, но не установлено Использование — параметр игнорируется без сообщений об ошибке
02
Поиск параметра по строке вместо объекта ПараметрКомпоновкиДанных — НайтиЗначениеПараметра возвращает Неопределено
03
Конец периода передан как начало дня — последние сутки выпадают из отчёта
04
Параметры установлены до загрузки варианта настроек — значения перезаписаны сохранёнными
05
В параметр ссылочного типа передана строка — сравнение в запросе не срабатывает

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

После установки параметра проверьте результат двумя способами. Визуально: сформируйте отчёт с заведомо узким условием (один контрагент, один день) и убедитесь, что в таблицу попали только ожидаемые строки. Технически: откройте настройки сформированного отчёта и убедитесь, что у параметра стоит флажок использования и отображается именно ваше значение.

Если отчёт формируется программно и результат выглядит неверно, временно выведите значения параметров в сообщение перед формированием — это быстрее, чем отладка всей компоновки.

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

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

Флаг использования параметра в настройках
Норма

Флажок установлен, значение заполнено

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

Флажок снят — значение не участвует в отчёте

Данные в сформированном отчёте
Норма

Попали только записи, удовлетворяющие параметру

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

Лишние строки или пустой отчёт при заведомо существующих данных

Границы периода
Норма

Записи последнего дня периода присутствуют

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

Последний день отсутствует — вероятно, конец периода задан началом дня

Итог

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

Параметр СКД объявляется в запросе через амперсанд и настраивается на закладке «Параметры» схемы компоновки. Значение действует только при включённом флаге использования. Из кода параметр находится через НайтиЗначениеПараметра с объектом ПараметрКомпоновкиДанных, после чего задаются Значение и Использование. Большинство проблем связано с типом значения, границами дат и перезаписью настроек вариантом.

Часто задаваемые вопросы

Как сделать параметр обязательным для заполнения?

В СКД нет отдельного флага обязательности, но есть рабочий приём: не задавайте значение по умолчанию и оставьте параметр доступным пользователю. Если параметр используется в запросе и не заполнен, при формировании отчёта платформа выдаст ошибку, что подтолкнёт пользователя к заполнению. Более мягкий вариант — проверять заполнение в обработчике ПередФормированиемОтчета расширения формы отчёта и выводить понятное сообщение.

Можно ли передать в параметр список значений?

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

Почему параметр не виден в настройках отчёта?

Скорее всего, для него установлен флаг «Ограничение доступности» на закладке «Параметры» схемы — такие параметры скрыты от пользователя и доступны только программно. Снимите флаг. Также проверьте, что параметр включён в доступные поля и не отфильтрован в режиме настроек текущего варианта.

Как установить параметр стандартного периода отчёта из кода?

Стандартный период хранится как параметр с типом СтандартныйПериод. Найдите его в ПараметрыДанных по имени (обычно «Период»), присвойте Значение = Новый СтандартныйПериод(ДатаНачала, ДатаОкончания) и включите Использование. Связанные параметры НачалоПериода и КонецПериода СКД вычислит из стандартного периода автоматически.

Чем параметр отличается от отбора в СКД?

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

Параметр установлен программно, но отчёт формируется со старым значением. В чём причина?

Наиболее вероятная причина — после установки параметров загружается вариант настроек или вызывается метод, восстанавливающий настройки, который перезаписывает ваши значения. Перенесите установку параметров после загрузки варианта. Также проверьте, что изменяете те же настройки, которые реально используются при формировании, а не их копию.