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

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

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

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

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

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

Ниже разобраны все рабочие способы с указанием места настройки, ограничений и типичных ошибок, из-за которых значение по умолчанию «не срабатывает».

Где в СКД задаётся значение параметра по умолчанию

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

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

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

Простое статическое значение по умолчанию

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

Тип значения должен совпадать с типом параметра, заданным в колонке «Тип». Если параметр имеет составной тип (например, несколько справочников), при выборе значения платформа предложит сначала выбрать тип. Несовпадение типов — частая причина того, что значение «сбрасывается» при сохранении схемы.

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

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

Вычисляемые значения: выражения в параметрах

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

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

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

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

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

Типовой приём — в событии ПриКомпоновкеРезультата найти параметр в настройках компоновщика и установить значение, если оно не заполнено пользователем. Важно проверять заполненность, иначе вы затрёте значение, которое пользователь выбрал осознанно.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

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

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

Если Парам <> Неопределено И Не ЗначениеЗаполнено(Парам.Значение) Тогда

Парам.Значение = Справочники.Организации.ОрганизацияПоУмолчанию();

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

КонецЕсли;

// ... далее стандартная компоновка

КонецПроцедуры

Обратите внимание на свойство Использование: значение без включённого использования СКД проигнорирует. Это вторая по частоте причина «не работающего» программного значения по умолчанию.

Проверка результата и типичные ошибки

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

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

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

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

Открытие отчёта
Норма

Параметр заполнен значением по умолчанию, отчёт формируется сразу

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

Поле пустое или отчёт требует заполнить параметр

Стандартные настройки
Норма

После сброса значение по умолчанию восстанавливается

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

После сброса параметр очищается

Ручное изменение
Норма

Введённое пользователем значение сохраняется и применяется

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

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

FAQ

Почему значение по умолчанию не подставляется при открытии отчёта?

Чаще всего мешают сохранённые пользовательские настройки варианта отчёта: они имеют приоритет над схемой. Нажмите «Все действия» → «Установить стандартные настройки». Также проверьте, что у параметра включено использование и тип значения совпадает с типом параметра.

Как сделать, чтобы параметр по умолчанию равнялся текущему пользователю?

Задайте в поле «Значение» выражение вида &ПараметрыСеанса.ТекущийПользователь либо вызов экспортной функции серверного общего модуля, возвращающей ссылку на пользователя. Тип параметра должен быть «СправочникСсылка.Пользователи».

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

Да, если у параметра включён флажок «Доступен список значений». Тогда в поле «Значение» можно выбрать или программно присвоить объект типа «СписокЗначений» с несколькими элементами, и отбор сработает по условию «В списке».

Как задать по умолчанию прошлый месяц для параметра периода?

Используйте «Стандартный период» с вариантом «Прошлый месяц» — границы пересчитаются автоматически. Либо задайте выражение через функцию общего модуля, вычисляющую НачалоМесяца(ДобавитьМесяц(ТекущаяДата, -1)) и соответствующий конец месяца.

Почему выражение в поле «Значение» выдаёт ошибку при формировании?

Выражение выполняется на сервере, поэтому все используемые общие модули должны быть серверными, а функции — экспортными. Также проверьте синтаксис: выражение пишется без «Возврат» и без точки с запятой в конце, это одна строка кода, а не процедура.

Чем отличается значение параметра в схеме от значения в настройках варианта?

Значение в схеме — это умолчание «из коробки», заданное разработчиком. Значение в варианте отчёта — пользовательская настройка, которая сохраняется и перекрывает умолчание схемы. При сбросе к стандартным настройкам снова применяется значение из схемы.

Итог

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

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