```1c
    ВЫБРАТЬ
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата,
    ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура1,
    ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход,
    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход КАК Остатки
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , , ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ЕСТЬNULL(&Дни, 0))) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты1
    ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура
```

Ошибка: Не задано значение параметра "Дни".
Оно и понятно, я его действительно не задаю.
Когда задаю, всё работает.

Вопрос: как не использовать условие к таблице если не задан параметр?
Я думал поможет ЕСТЬNULL(&Дни, 0), но нет..
---
Не обязательно ставить ему галку "Запрещать незаполненные значения" (я так понимаю что вы именно её включили), достаточно использование поменять, тогда и 0 пройдёт!
---
```1c
    ВЫБРАТЬ
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата,
    ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура1,
    ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход,
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0) > 0
    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0)
    ИНАЧЕ 0
    КОНЕЦ КАК Остатки
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , , ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -&Дни)) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты1
    ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура
    ГДЕ
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0) > 0
    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0)
    ИНАЧЕ 0
    КОНЕЦ <> 0
```
---
Поместите условие в фигурные скобки { }
Должно сработать.
А вообще вот к примеру обсуждение http://www.forum.mista.ru/topic.php?id=509649
---
```1c
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты{(, , , , ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -&Дни))}
```

и

```1c
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , , {ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -&Дни)})
```

не сработало.
---
По ссылке ходил? Там же описано решение вопроса.
---
но у меня условие наложено на виртуальную таблицу, я его не могу добавить куда-либо
---
У вас это отчёт (если да, то на СКД?) или просто запрос, которым вы получаете таблицу и потом её выводите?
Просто если СКД, то на закладке Параметры можно его прописать, если просто запрос в теле процедуры или функции то можно стрЗаменить(текстЗапроса,"&Дни","0") или в запрос.установить параметр("дни",?(ЗначениеЗаполнено(Дни),Дни,0);
---
отчёт на СКД. Прописать в параметрах? Как? В поле "Выражение"? Но что?
---
Вопрос оказался интереснее чем показался на первый взгляд)

По сути это условие должно отрабатывать всегда, просто дата с которой он сравнивает напрямую зависит от параметра "Дни", поэтому предлагаю на закладке параметров поставить ему "использование" = "Всегда", но тогда возникает другая проблема, если пользователь не хочет использовать "дни" и просто снимет галку с этого параметра а значение не обнулит, СКД его всё равно использует! Нужно как-то обнулить это значение при изменении галки, либо искать другой выход, типа программно задать этот параметр! (в выражениях можно так же использовать функции общих модулей)
---
Выбор когда &Дни = 0 тогда истина иначе ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, &Дни) конец
---
У вас параметр "Дни" не задан, вам вывалится ошибка ещё на подходе!
---
так да! Но я бы хотел иногда его не задавать.
Сейчас я его сделал обязательным и по умолчанию -1 (что не меняет отчет никак).
Странно что 0 принимается как "не задан" а не ноль..
---
Не обязательно ставить ему галку "Запрещать незаполненные значения" (я так понимаю что вы именно её включили), достаточно использование поменять, тогда и 0 пройдёт!
---
использование можно поменять с "Авто" на "Всегда", но ноль всё равно выступает как незаполненное значение паратра
---
ах, галку снял "Запрещать незаполненные значения", использование "Всегда" и всё работает и с параметром и без параметра! Спасибо!
---
Опять же, не забудьте что у вас условие отрабатывает всегда! даже если галочка использование в пользовательских настройках снята, можно поймать ошибку!
---
а не подскажете ещё, как можно "убрать" пустые строки из отчёта?

```1c
    ВЫБРАТЬ
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата,
    ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура1,
    ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход,
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход > 0
    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход
    КОНЕЦ КАК Остатки
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , , {(ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -&Дни))}) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты1
    ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура
```

Остатки выводятся даже нулевые, а мне не нужны пустые строки.
---
```1c
    ВЫБРАТЬ
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата,
    ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура1,
    ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход,
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0) > 0
    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0)
    ИНАЧЕ 0
    КОНЕЦ КАК Остатки
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , , ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -&Дни)) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты1
    ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура
    ГДЕ
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0) > 0
    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0)
    ИНАЧЕ 0
    КОНЕЦ <> 0
```
---
```1c
    ВЫБРАТЬ
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования,
    ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата,
    ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура1,
    ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход,
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0) > 0
    ТОГДА 0
    ИНАЧЕ ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0)
    КОНЕЦ КАК Остатки
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , , {(ДокументОприходования.Дата < ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -&Дни))}) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты КАК ПартииТоваровНаСкладахОстаткиИОбороты1
    ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура
    ГДЕ
    ВЫБОР
    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0) > 0
    ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход - ЕСТЬNULL(ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоРасход, 0)
    ИНАЧЕ 0
    КОНЕЦ > 0
```

ну почти)
---
не тот скрин.

Вот что получилось:
---
Да, так всё хорошо.
Огромное вам спасибо!