Отчеты и Аналитика · 11 мин
Как установить значение параметра в СКД 1С
Способы установить значение параметра в СКД 1С: в настройках отчёта, программно через компоновщик настроек и в форме. Примеры кода, типичные ошибки и проверка результата.
Параметры в системе компоновки данных (СКД) управляют отбором данных отчёта: периодом, организацией, контрагентом и другими условиями. Если параметр не заполнен или заполнен неверно, отчёт либо выдаёт ошибку «Параметр обязателен», либо возвращает пустой результат, и пользователь не понимает причину.
Значение параметра можно установить тремя способами: вручную в форме отчёта, в настройках варианта отчёта в конфигураторе и программно — через компоновщик настроек. Выбор способа зависит от того, кто задаёт значение: конечный пользователь, разработчик при проектировании отчёта или код, который формирует отчёт автоматически (например, в регламентном задании).
Ниже разобраны все три подхода с примерами кода, а также типичные ошибки: почему параметр не виден в форме, почему установленное значение игнорируется и как проверить, что отбор реально применился.
Где объявляются параметры и как они работают
Параметр создаётся в схеме компоновки данных на закладке «Параметры». Там задаются имя, тип, ограничение доступности, признак обязательности, значение по умолчанию и выражение для вычисляемых параметров. Если параметр используется в тексте запроса (например, &Организация), СКД подставляет его значение при формировании отчёта.
Важно различать два уровня: параметры, объявленные в схеме, и их значения в настройках. Схема определяет, какие параметры существуют, а настройки (пользовательские или программные) — какие значения им присвоены. Один и тот же отчёт может формироваться с разными наборами настроек, и именно настройки определяют итоговый результат.
Если в запросе параметр указан, но в настройках ему не задано значение и не установлено значение по умолчанию, платформа при формировании выдаст ошибку. Поэтому обязательные параметры либо заполняются пользователем, либо инициализируются кодом до вызова формирования отчёта.
Установка значения в форме отчёта вручную
Самый простой сценарий — пользователь задаёт параметр перед формированием. В типовых отчётах на управляемых формах параметры выводятся в панель быстрых настроек или доступны через кнопку «Настройки» (или «Ещё → Изменить вариант»). Пользователь заполняет поле значения и нажимает «Сформировать».
Если параметр не отображается в форме, проверьте два момента. Первый — в схеме на закладке «Параметры» у параметра не должно быть снято ограничение доступности без необходимости, а флажок «Включать в доступные поля» влияет на видимость. Второй — в настройках варианта отчёта (закладка «Параметры» конструктора настроек) у параметра должен быть установлен режим редактирования «Быстрый доступ» или «Обычный», иначе он скрыт от пользователя.
Для параметров типа «Дата» удобно использовать стандартные периоды: в настройках параметра можно указать тип «СтандартныйПериод», и пользователь получит привычный выбор «Сегодня», «Месяц» и т.п. Это снижает количество ошибок ввода дат вручную.
- 1Откройте отчёт и нажмите «Настройки» или раскройте панель быстрых настроек
- 2Найдите нужный параметр в списке параметров данных
- 3Установите флажок использования, если он есть, и введите значение
- 4Нажмите «Закрыть и сформировать» или «Сформировать»
- 5Проверьте, что данные в отчёте изменились в соответствии с заданным значением
Установка значения по умолчанию в конфигураторе
Когда значение известно заранее и одинаково для большинства запусков, его задают прямо в схеме. Откройте схему компоновки данных, перейдите на закладку «Параметры», выберите параметр и заполните колонку «Значение». Для дат часто используют выражения на языке выражений компоновки, например начало текущего месяца.
Кроме схемы, значение по умолчанию можно задать в настройках варианта отчёта: в конструкторе настроек на закладке «Параметры» укажите значение для конкретного варианта. Это удобно, когда у отчёта несколько вариантов с разными предустановленными отборами — например, «По всем организациям» и «По головной организации».
Учтите: значение по умолчанию из схемы применяется только если в пользовательских настройках параметр не переопределён. Как только пользователь один раз изменил значение и настройки сохранились, будет использоваться его значение, а не значение из схемы.
Программная установка параметра через настройки
Основной программный сценарий — установить параметр до формирования отчёта в собственном коде. Работа ведётся с коллекцией ПараметрыДанных настроек компоновки. Элемент находится по имени параметра, после чего задаются свойства Значение и Использование.
Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;
Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("Организация"));
Если Параметр <> Неопределено Тогда
Параметр.Значение = ВыбраннаяОрганизация;
Параметр.Использование = Истина;
КонецЕсли;
Альтернативный приём — метод УстановитьЗначениеПараметра у настроек или у пользовательских настроек. Он короче и сразу устанавливает использование:
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ДатаОтчета);
Если отчёт формируется полностью программно (без формы), последовательность такая: создать объект отчёта, получить схему, загрузить настройки в компоновщик, установить параметры, затем через компоновщик макета и процессор компоновки вывести результат в табличный документ. Установка параметров выполняется строго до инициализации компоновщика макета — после неё изменения настроек уже не попадут в макет.
Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация"));
Параметр.Значение = Справочники.Организации.НайтиПоНаименованию("ООО Ромашка");
Параметр.Использование = Истина;Установка параметра в модуле формы отчёта
В форме отчёта, созданной на базе типового механизма, настройки доступны через реквизит Отчет: Отчет.КомпоновщикНастроек.Настройки. Типичное место для установки — обработчики ПриСозданииНаСервере (начальные значения) или собственные команды формы. После изменения настроек вне стандартного механизма отчёт нужно переформировать.
Установка параметров в пользовательских настройках
Если отчёт работает в режиме пользовательских настроек, изменять нужно именно их, иначе правки перезапишутся. Коллекция находится в КомпоновщикНастроек.ПользовательскиеНастройки.Элементы, элементы ищутся по свойству Параметр. Это актуально для управляемых форм БСП, где основные настройки хранятся отдельно от пользовательских.
Способы установки параметра
Подходит для разовых запусков пользователем; не требует кода, но значение не фиксируется в конфигурации
Подходит для типовых значений; перекрывается пользовательскими настройками
Подходит для автоматического формирования и предустановок; требует кода и контроля момента установки
Особенности отдельных типов параметров
Параметры типа «СтандартныйПериод» устанавливаются объектом СтандартныйПериод, а не двумя датами. Если в запросе используются &НачалоПериода и &КонецПериода, можно либо задать оба параметра-даты, либо один стандартный период и в схеме настроить вычисляемые выражения для границ.
Для списковых параметров (множественный выбор) значением должна быть коллекция — например, массив или список значений. В запросе такой параметр используется с оператором В (&СписокОрганизаций). Если передать одиночное значение туда, где запрос ожидает список, отбор сработает некорректно или запрос завершится с ошибкой.
Параметры с составным типом (например, ссылка на разные справочники) требуют точного совпадения типа присваиваемого значения с допустимыми типами параметра. Перед присвоением полезно проверить, что значение не пустое и нужного типа, иначе отбор молча не сработает.
Проверка результата и отладка
Первый признак корректной установки — отчёт формируется без ошибки «Не заполнен обязательный параметр», и данные в нём меняются при смене значения. Если данные не меняются, параметр либо не используется в запросе, либо установлено Использование = Ложь, либо значение перекрыто другими настройками.
Для отладки полезно вывести текущие значения параметров перед формированием: перебрать коллекцию ПараметрыДанных.Элементы и записать в журнал регистрации имя, значение и флаг использования каждого элемента. Это быстро показывает, дошло ли значение до настроек.
Ещё один способ — открыть форму настроек отчёта после программной установки и убедиться, что параметр отображается с нужным значением. Если в форме значение видно, а отчёт пустой, проблема в данных или в тексте запроса, а не в установке параметра.
Как проверить результат
Нет ошибки об обязательном параметре
Сообщение «Параметр обязателен» или пустой макет
При смене значения меняется состав строк
Результат одинаков при любых значениях — параметр не используется
У элемента параметра Использование = Истина
Значение задано, но Использование = Ложь
Часто задаваемые вопросы
Почему параметр не виден в форме отчёта?
Чаще всего у параметра в настройках варианта установлен режим редактирования «Недоступный» или он не включён в пользовательские настройки. Откройте «Изменить вариант», найдите параметр на закладке «Параметры» и переведите его в быстрый или обычный доступ. Также проверьте, что в схеме у параметра не снята доступность.
Как задать параметру список значений?
Присвойте свойству Значение массив или список значений с элементами нужного типа, а в запросе используйте конструкцию Поле В (&ИмяПараметра). В схеме у параметра должен быть установлен признак «Доступен список значений», иначе множественный выбор в форме будет недоступен.
Устанавливаю параметр в коде, но отчёт его игнорирует. Что проверить?
Три вещи: установлено ли Использование = Истина; не изменяете ли вы основные настройки там, где действуют пользовательские; не выполняется ли установка после инициализации компоновщика макета. Также убедитесь, что имя параметра в коде точно совпадает с именем в схеме, включая регистр символов в сложных случаях.
Как установить период одним параметром вместо двух дат?
Объявите параметр типа «СтандартныйПериод» и присвойте ему объект СтандартныйПериод с заполненными ДатаНачала и ДатаОкончания. В запросе границы доступны через выражения, либо в схеме создайте вычисляемые параметры НачалоПериода и КонецПериода с выражениями на языке компоновки.
Можно ли задать значение параметра до открытия формы отчёта?
Да, если отчёт открывается программно: получите объект отчёта или передайте параметры формы, в обработчике ПриСозданииНаСервере установите значения в настройках компоновщика. Для внешних отчётов удобно формировать их полностью в коде без открытия формы.
Что важно запомнить
Значение параметра СКД задаётся в коллекции ПараметрыДанных: найдите элемент по имени, присвойте Значение и включите Использование. Делайте это до формирования макета компоновки, проверяйте режим видимости параметра в варианте отчёта и помните про различие основных и пользовательских настроек.