Добрый день! Начинающий программист, делаю отбор в запросе по дате подписания, вставляю между датами в запросе оператор Между. Устанавливаю параметр, в запрос передаю дату начала и дату конца с формы через Объект.ДатаНачала/Объект.ДатаКонца. Когда значения отбора на форме заполнены, отбор работает замечательно. Но когда не заполнены, программа всё равно выбирает документы, но у которых дата подписания пустая. Понимаю, почему это происходит, потому что даты пустые отбора, но не понимаю как победить это. Какое условие вписать, чтобы отбор работал только когда значения заполнены. Подскажите, пожалуйста
---
Можно разными способами сделать, например

```1c
    Если Не ЗначениеЗаполнено(объект.ДатаНачалаЗаявитель) И НЕ ЗначениеЗаполнено(объект.ДатаКонцаЗаявитель) Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "пто_Договоры.ДатаПодписанияЗаявителем МЕЖДУ &ДатаНачалаЗаявитель И &ДатаКонцаЗаявитель", "Истина");
    КонецЕсли;
```
 чтобы отбора вообще не было

Либо отдельно сравнивать (не используя "между") и подбирать условия заполненности отдельно

```1c
    | пто_Договоры.ДатаПодписанияЗаявителем > =&ДатаНачалаЗаявитель
    И пто_Договоры.ДатаПодписанияЗаявителем < &ДатаКонцаЗаявитель
```

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

    Запрос.УстановитьПараметр("ПараметрСтрокаПоиска", "%" + Поиск + "%");
    Запрос.УстановитьПараметр("ДатаНачалаЗаявитель", Объект.ДатаНачалаЗаявитель);
    Запрос.УстановитьПараметр("ДатаКонцаЗаявитель", Объект.ДатаКонцаЗаявитель);
```
---
```1c
    ГДЕ
    ВЫБОР
    КОГДА &ДатаНачалаЗаявитель = ДАТАВРЕМЯ(1, 1, 1)
    И &ДатаКонцаЗаявитель = ДАТАВРЕМЯ(1, 1, 1)
    ТОГДА ЛОЖЬ
    ИНАЧЕ пто_Договоры.ДатаПодписанияЗаявителем МЕЖДУ &ДатаНачалаЗаявитель И &ДатаКонцаЗаявитель
    КОНЕЦ
```
---
так отбор по пустой дате договора добавьте!

```1c
    |ГДЕ
    | пто_Договоры.ДатаПодписанияЗаявителем <> ДатаВремя(1,1,1)
    | И пто_Договоры.ДатаПодписанияЗаявителем МЕЖДУ &ДатаНачалаЗаявитель И &ДатаКонцаЗаявитель
    | И пто_Договоры.Наименование ПОДОБНО &ПараметрСтрокаПоиска";
```
---
ДатаВремя(1,1,1)

ругается на синтаксическую ошибку
---
ДатаВремя(1,1,1,0,0,0) попробуйте
---
ДатаВремя(1,1,1,0,0,0)

Всё равно ругается на синтаксическую ошибку почему-то
---
Можно разными способами сделать, например

```1c
    Если Не ЗначениеЗаполнено(объект.ДатаНачалаЗаявитель) И НЕ ЗначениеЗаполнено(объект.ДатаКонцаЗаявитель) Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "пто_Договоры.ДатаПодписанияЗаявителем МЕЖДУ &ДатаНачалаЗаявитель И &ДатаКонцаЗаявитель", "Истина");
    КонецЕсли;
```
 чтобы отбора вообще не было

Либо отдельно сравнивать (не используя "между") и подбирать условия заполненности отдельно

```1c
    | пто_Договоры.ДатаПодписанияЗаявителем > =&ДатаНачалаЗаявитель
    И пто_Договоры.ДатаПодписанияЗаявителем < &ДатаКонцаЗаявитель
```

либо в самом запросе, как уже сказали, сравнивать на неравенство ДАТАВРЕМЯ(1, 1, 1)
---
Всем спасибо!