Есть регистр накопления ТоварыНаСкладах. Мне нужно выбрать количество прихода по документу Поступление Товаров и остальные поступления отдельно - например оприходование или перемещение товаров.
Выбираю в запросе так:

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

Идеально было бы сделать через ИНАЧЕ и все остальные приходы отобрались бы, но мне нужно чтобы приход по поступлению был в одну переменную запроса, а все остальные поступления в другую. Как выйти? Туплю. Заранее спасибо.
---
Делаете 2 выбора в первом по иначе 0, во втором наборот

```1c
    |ВЫБОР КОГДА Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
    |ИНАЧЕ 0
    |КОНЕЦ КАК КоличествоПриходПОпоступлению,
    |ВЫБОР КОГДА Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |ТОГДА 0
    |ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
    |КОНЕЦ КАК КоличествоПриходНЕпоступление
```
---
Мне кажется, лучше сделать через ОБЪЕДИНИТЬ ВСЕ. В одном запросе одно условие, в другом - таком же - другое. Нагрузки меньше на сервер, да и проще потом разбирать. ВЫБОР довольно громоздкая конструкция. К тому же таблица виртуальная.
---
Делаете 2 выбора в первом по иначе 0, во втором наборот

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

Как то так
---
по моему НЕ лучше не использовать, но "это не точно" :)
---
Почему? По идее должно вычисляться выражение справа от "НЕ" и инвертироваться.
---
По логике верны оба варианта. Просто недавно, тут же на инфостарте, читал статью про оптимальные запросы и там рассматривалось на простых примерах. И один из примеров был про то что НЕ лучше избегать.
---
Соглашусь (потестил), ваш вариант работает быстрее :)
---
https://infostart.ru/public/1115809/

Оператор NOT

Когда ваш запрос содержит оператор NOT, вполне вероятно, что индекс не используется, как и с оператором OR. Это неизбежно замедлит ваш запрос. Если вы не знаете, что здесь подразумевается, рассмотрите следующий запрос:

SEL ECT driverslicensenr, name
FR OM Drivers
WHERE NOT (year > 1980);

Этот запрос, безусловно, будет выполняться медленнее, чем вы, возможно, ожидаете, в основном потому, что он сформулирован гораздо сложнее, чем может быть: в таких случаях, как этот, лучше всего искать альтернативу. Рассмотрите возможность замены NOT операторами сравнения, такими как >, <> или !>; Приведенный выше пример действительно может быть переписан и выглядеть примерно так:

SELECT driverslicensenr, name
FR OM Drivers
WH ERE year <= 1980;