Дата публикации: 16 ноября 2025

Что такое необязательный параметр в запросе СКД в 1С?

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

В Системе компоновки данных (СКД) понятие «необязательный параметр» тесно связано с тем, как платформа формирует итоговый SQL-запрос к базе данных.

Если в обычном запросе (через объект Запрос) вы обязаны установить значение для каждого параметра с префиксом &, иначе система выдаст ошибку, то в СКД все гибче.

Главная суть

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

В СКД это реализуется через специальные фигурные скобки {} в тексте запроса. Это называется расширениями языка запросов для СКД.

Как это выглядит в коде запроса

Обычно параметры в ГДЕ выглядят так: ГДЕ Склад = &Склад. Если вы не передадите склад, запрос «упадет».

Чтобы сделать его необязательным, используется такой синтаксис:

ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.Количество
ИЗ
    РегистрНакопления.Продажи КАК Продажи
{ГДЕ
   Продажи.Склад.* КАК Склад} // Это расширение СКД

Как это работает на практике:

  1. Если значение параметра заполнено: СКД автоматически добавит в итоговый запрос условие ГДЕ Продажи.Склад = &Склад.

  2. Если значение НЕ заполнено (снята галочка использования): СКД просто «выкусит» этот кусок из текста запроса. В итоге в базу данных уйдет чистый запрос без лишних фильтров, что положительно сказывается на производительности.

Где настраивается «обязательность»?

На закладке «Параметры» в конструкторе схемы компоновки данных есть две важные колонки:

  1. Ограничение доступности: Если галочка стоит, пользователь не увидит этот параметр в настройках отчета.

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

    • Если галочка снята, параметр считается необязательным. Если пользователь его не заполнит, условие с этим параметром просто не применится.

Когда это полезно?

  • Гибкие фильтры: Когда пользователю нужно отобрать данные по конкретному контрагенту, но если он его не выбрал — показать данные по всем сразу.

  • Оптимизация: Вместо того чтобы писать в запросе громоздкие конструкции вида ГДЕ (&Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ИЛИ Контрагент = &Контрагент), вы просто используете необязательный параметр СКД.

Важный нюанс: Параметры виртуальных таблиц

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

Остались вопросы?

Мы расскажем вам все про 1С в облаке, ответим на любые вопросы и поделимся полезными материалами по обучению.

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время
Оставьте заявку. Мы свяжемся с вами в самое ближайшее время
Оставьте отзыв о нас

Расскажите, как сервис 42Clouds помог вашему бизнесу. Отзыв будет опубликован после проверки модератором.