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

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | Распоряжения.Период КАК Период,
    | Распоряжения.Партнер КАК Партнер,
    | Распоряжения.СуммаДокумента КАК Сумма,
    | Распоряжения.Распоряжение.Номер КАК Номер,
    | Распоряжения.Распоряжение.Дата КАК ДатаЗаказа,
    | Распоряжения.Транспорт КАК Транспорт,
    | Распоряжения.Транспорт.Водитель КАК Водитель,
    | Распоряжения.СтатусДоставки КАК Статус,
    | Распоряжения.ДатаС КАК Ушла,
    | Распоряжения.ДатаПо КАК Пришла,
    | Распоряжения.СостояниеОплаты КАК Оплата
    |ИЗ
    | РегистрСведений.од_РаспоряженияНаДоставку КАК Распоряжения
    |ГДЕ
    | Распоряжения.СтатусДоставки В (ЗНАЧЕНИЕ(Перечисление.од_СтатусыДоставки.ВПути), ЗНАЧЕНИЕ(Перечисление.од_СтатусыДоставки.Доставлено))
    | И (Распоряжения.Транспорт.Водитель = &Водитель
    | ИЛИ &Водитель = ЗНАЧЕНИЕ(Справочник.од_ВодителиЭкспедиторы.ПустаяСсылка))
    | И (Распоряжения.Период >= &ДатаНачала
    | И Распоряжения.Период <= &ДатаКонца
    | ИЛИ &ДатаКонца = ДАТАВРЕМЯ(1,1,1))
    | И (НАЧАЛОПЕРИОДА(Распоряжения.ДатаС, ДЕНЬ) = &ДатаОтправки
    | ИЛИ &ДатаОтправки = ДАТАВРЕМЯ(1,1,1))";

    Запрос.УстановитьПараметр("ДатаНачала", ПериодОтчета.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаКонца", ПериодОтчета.ДатаОкончания);
    Запрос.УстановитьПараметр("ДатаОтправки", ДатаОтправки);
    Запрос.УстановитьПараметр("Водитель", Водитель);
```
---
как-то так

```1c
    Если НЕ ЗначениеЗаполнено(Водитель) Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "Распоряжения.Транспорт.Водитель = &Водитель
    ИЛИ", "); // получаем текст запроса без условия по Водитель = Водитель
    Иначе
    Запрос.УстановитьПараметр("Водитель", Водитель); // а если Водитель выбран, то и параметр установим
    КонецЕсли;
```
---
как-то так

```1c
    Если НЕ ЗначениеЗаполнено(Водитель) Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "Распоряжения.Транспорт.Водитель = &Водитель
    ИЛИ", "); // получаем текст запроса без условия по Водитель = Водитель
    Иначе
    Запрос.УстановитьПараметр("Водитель", Водитель); // а если Водитель выбран, то и параметр установим
    КонецЕсли;
```
---
Спасибо
---
После первого формирования параметр сам заполняется, как это убрать?
---
нет условия в запросе, нет параметра
а там хоть он трижды будет установлен. запросу будет на него глубоко фиолетово
т.е. если не будет в запросе "&Водитель" то на УстановитьПараметр("Водитель"), запрос реагировать не будет

а вот это условие я бы поменял на более корректное
И (Распоряжения.Транспорт.Водитель = &Водитель
 ИЛИ &Водитель = ЗНАЧЕНИЕ(Справочник.од_ВодителиЭкспедиторы.ПустаяСсылка))

а то получается, что Водитель = Водитель и в тоже время ИЛИ он пустая ссылка, как-то нелогично
хотя бы так
И (Распоряжения.Транспорт.Водитель = &Водитель
 ИЛИ Распоряжения.Транспорт.Водитель = ЗНАЧЕНИЕ(Справочник.од_ВодителиЭкспедиторы.ПустаяСсылка))
---
Да, это я до этого таким способом пробовал реализовать. Сейчас так:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | Распоряжения.Период КАК Период,
    | Распоряжения.Партнер КАК Партнер,
    | Распоряжения.СуммаДокумента КАК Сумма,
    | Распоряжения.Распоряжение.Номер КАК Номер,
    | Распоряжения.Распоряжение.Дата КАК ДатаЗаказа,
    | Распоряжения.Транспорт КАК Транспорт,
    | Распоряжения.Транспорт.Водитель КАК Водитель,
    | Распоряжения.СтатусДоставки КАК Статус,
    | Распоряжения.ДатаС КАК Ушла,
    | Распоряжения.ДатаПо КАК Пришла,
    | Распоряжения.СостояниеОплаты КАК Оплата
    |ИЗ
    | РегистрСведений.од_РаспоряженияНаДоставку КАК Распоряжения
    |ГДЕ
    | Распоряжения.СтатусДоставки В (ЗНАЧЕНИЕ(Перечисление.од_СтатусыДоставки.ВПути), ЗНАЧЕНИЕ(Перечисление.од_СтатусыДоставки.Доставлено))
    | И Распоряжения.Транспорт.Водитель = &Водитель
    | И (Распоряжения.Период >= &ДатаНачала
    | И Распоряжения.Период <= &ДатаКонца
    | ИЛИ &ДатаКонца = ДАТАВРЕМЯ(1,1,1))
    | И (НАЧАЛОПЕРИОДА(Распоряжения.ДатаС, ДЕНЬ) = &ДатаОтправки
    | ИЛИ &ДатаОтправки = ДАТАВРЕМЯ(1,1,1))";

    Запрос.УстановитьПараметр("ДатаНачала", ПериодОтчета.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаКонца", ПериодОтчета.ДатаОкончания);
    Запрос.УстановитьПараметр("ДатаОтправки", ДатаОтправки);
    Если ЗначениеЗаполнено(Водитель) Тогда
    Запрос.УстановитьПараметр("Водитель", Водитель);
    Иначе
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "И Распоряжения.Транспорт.Водитель = &Водитель", ");
    КонецЕсли;

    Возврат Запрос;
```

Но все равно почему-то после первого формирования параметр Водитель сам заполнятся.. Не могу понять почему.
1й скрин - при открытии отчета
2й скрин - второе формирование отчета
---
смотреть в код надо
скорее всего совпадение имен имеет место быть и в результате при заполнении табличного документа последний водитель влетает в реквизит на форме
---
Вы правы, нашел ошибку. Я чет прицепился к запросу
---
Я бы так сделал:

```1c
    |ГДЕ
    ...
    | И (
    ВЫБОР
    КОГДА &Водитель =
    ЗНАЧЕНИЕ(Справочник.од_ВодителиЭкспедиторы.ПустаяСсылка)
    ТОГДА Истина
    ИНАЧЕ Распоряжения.Транспорт.Водитель = &Водитель
    КОНЕЦ)
    ...
```