Перечитал внимательно про построитель - оказалось что (несмотря на схожесть синтаксиса с "Компоновкой данных") это устаревшая вещь и работать с ней неудобно.
Т.е. так, как я описывал выше, будут работать параметры на закладке "Компоновка данных" - это подходит для динамических списков на форме.
В случае программного использования запроса проще либо
а) сравнивать на пустое значение параметра:
Запрос.Текст="ВЫБРАТЬ
| ...
|ИЗ
| Документ.ЗаявкаНаПоставку КАК ЗаявкаНаПоставку
| ...
|ГДЕ
| ((&ДатаНачала = '0001.01.01') ИЛИ (НАЧАЛОПЕРИОДА(ЗаявкаНаПоставку.Дата, ДЕНЬ) МЕЖДУ &ДатаНачала И &ДатаКонца))
| И ((&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)) ИЛИ (ЗаявкаНаПоставку.Клиент = &Клиент))";
б) добавить еще один параметр использования параметра
:
Запрос.Текст="ВЫБРАТЬ
| ...
|ИЗ
| Документ.ЗаявкаНаПоставку КАК ЗаявкаНаПоставку
| ...
|ГДЕ
| (&ИспользоватьПериод ИЛИ (НАЧАЛОПЕРИОДА(ЗаявкаНаПоставку.Дата, ДЕНЬ) МЕЖДУ &ДатаНачала И &ДатаКонца))
| И (&ИспользоватьКлиент ИЛИ (ЗаявкаНаПоставку.Клиент = &Клиент))";
Запрос.Параметры.Вставить("ИспользоватьПериод", Истина);
Запрос.Параметры.Вставить("ИспользоватьКлиент", Ложь);
P.S. С точки зрения опитимизации времени выполнения лучше вместо
"НАЧАЛОПЕРИОДА(ЗаявкаНаПоставку.Дата, ДЕНЬ) МЕЖДУ &ДатаНачала И &ДатаКонца"
использовать
"ЗаявкаНаПоставку.Дата МЕЖДУ &ДатаНачала И &ДатаКонца"
и передавать параметры так:
Запрос.Параметры.Вставить("ДатаНачала", НачалоДня(ДатаНачала));
Запрос.Параметры.Вставить("ДатаКонца", КонецДня(ДатаКонца));