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

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

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

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

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

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

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

Где объявляются параметры и как они работают

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

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

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

Установка значения в форме отчёта вручную

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

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

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

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

Установка значения по умолчанию в конфигураторе

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

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

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

Программная установка параметра через настройки

Основной программный сценарий — установить параметр до формирования отчёта в собственном коде. Работа ведётся с коллекцией ПараметрыДанных настроек компоновки. Элемент находится по имени параметра, после чего задаются свойства Значение и Использование.

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

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

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

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

Параметр.Значение = ВыбраннаяОрганизация;

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

КонецЕсли;

Альтернативный приём — метод УстановитьЗначениеПараметра у настроек или у пользовательских настроек. Он короче и сразу устанавливает использование:

Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ДатаОтчета);

Если отчёт формируется полностью программно (без формы), последовательность такая: создать объект отчёта, получить схему, загрузить настройки в компоновщик, установить параметры, затем через компоновщик макета и процессор компоновки вывести результат в табличный документ. Установка параметров выполняется строго до инициализации компоновщика макета — после неё изменения настроек уже не попадут в макет.

bsl
Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация"));
Параметр.Значение = Справочники.Организации.НайтиПоНаименованию("ООО Ромашка");
Параметр.Использование = Истина;

Установка параметра в модуле формы отчёта

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

Установка параметров в пользовательских настройках

Если отчёт работает в режиме пользовательских настроек, изменять нужно именно их, иначе правки перезапишутся. Коллекция находится в КомпоновщикНастроек.ПользовательскиеНастройки.Элементы, элементы ищутся по свойству Параметр. Это актуально для управляемых форм БСП, где основные настройки хранятся отдельно от пользовательских.

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

В форме отчёта вручную

Подходит для разовых запусков пользователем; не требует кода, но значение не фиксируется в конфигурации

Значение по умолчанию в схеме или варианте

Подходит для типовых значений; перекрывается пользовательскими настройками

Программно через ПараметрыДанных

Подходит для автоматического формирования и предустановок; требует кода и контроля момента установки

Особенности отдельных типов параметров

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

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

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

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

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

Первый признак корректной установки — отчёт формируется без ошибки «Не заполнен обязательный параметр», и данные в нём меняются при смене значения. Если данные не меняются, параметр либо не используется в запросе, либо установлено Использование = Ложь, либо значение перекрыто другими настройками.

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

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

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

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

Отчёт формируется
Норма

Нет ошибки об обязательном параметре

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

Сообщение «Параметр обязателен» или пустой макет

Данные реагируют на значение
Норма

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

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

Результат одинаков при любых значениях — параметр не используется

Свойство Использование
Норма

У элемента параметра Использование = Истина

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

Значение задано, но Использование = Ложь

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

Почему параметр не виден в форме отчёта?

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

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

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

Устанавливаю параметр в коде, но отчёт его игнорирует. Что проверить?

Три вещи: установлено ли Использование = Истина; не изменяете ли вы основные настройки там, где действуют пользовательские; не выполняется ли установка после инициализации компоновщика макета. Также убедитесь, что имя параметра в коде точно совпадает с именем в схеме, включая регистр символов в сложных случаях.

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

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

Можно ли задать значение параметра до открытия формы отчёта?

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

Итог

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

Значение параметра СКД задаётся в коллекции ПараметрыДанных: найдите элемент по имени, присвойте Значение и включите Использование. Делайте это до формирования макета компоновки, проверяйте режим видимости параметра в варианте отчёта и помните про различие основных и пользовательских настроек.