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

В начале настроим движение в документе “Приходная накладная” при помощи конструктора движений:
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ОстаткиНаСкладах Приход
Движения.ОстаткиНаСкладах.Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Движение = Движения.ОстаткиНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
Движение.Склад = Склад;
Движение.Сотрудник = Ответственный;
Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
КонецЦикла;
КонецПроцедуры
Во-первых при помощи СКД создадим отчет. В конструкторе запросов выберем все поля из виртуальной таблице остатки нашего регистра.

Во-вторых установим условия в конструкторе запросов.

В-третьих настроим “Параметры” в Системе компоновки данных 1с.

Далее в настройках укажем все поля запроса. Для параметров Склад, Сотрудник и Номенклатура выставим галочку “Включить в пользовательские настройки”.

В результате в конструкторе запросов получим следующий код:
ВЫБРАТЬ
ОстаткиНаСкладахОстатки.СуммаОстаток КАК СуммаОстаток,
ОстаткиНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
ОстаткиНаСкладахОстатки.Номенклатура КАК Номенклатура,
ОстаткиНаСкладахОстатки.Склад КАК Склад,
ОстаткиНаСкладахОстатки.Сотрудник КАК Сотрудник
ИЗ
РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
ГДЕ
ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура
И ОстаткиНаСкладахОстатки.Склад = &Склад
И ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник
Необязательный параметр в запросе СКД при помощи фигурных скобок.
Необязательный параметр в запросе при помощи фигурных скобок. Приведем пример использования 1 необязательного параметра.
ВЫБРАТЬ
ОстаткиНаСкладахОстатки.СуммаОстаток КАК СуммаОстаток,
ОстаткиНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
ОстаткиНаСкладахОстатки.Номенклатура КАК Номенклатура,
ОстаткиНаСкладахОстатки.Склад КАК Склад,
ОстаткиНаСкладахОстатки.Сотрудник КАК Сотрудник
ИЗ
РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
ГДЕ
ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура
И ОстаткиНаСкладахОстатки.Склад = &Склад
{ГДЕ
(ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник)}
Ниже приведен пример, когда все 3 параметра необязательные.
{ГДЕ
(ОстаткиНаСкладахОстатки.Номенклатура = &Номенклатура),
(ОстаткиНаСкладахОстатки.Склад = &Склад),
(ОстаткиНаСкладахОстатки.Сотрудник = &Сотрудник
Результат работы отчета на СКД с тремя необязательными параметрами:

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