Здравствуйте, подскажите пожалуйста как можно сделать.

Нужен запрос который выведет только те позиции номенклатуры которые есть на ВСЕХ складах.

К примеру.

У нас 5 складов.

Передаем в параметр запроса = "Конструктор лего"

Если "Конструктор лего" нет хотябы на 1 из 5 складов, он в результат не должен попадать.

Можно ли как-то в запросе это отобрать, или через цикл только?
---
Ну самое простое выбрать номенклатуру по остаткам регистра накопления с группировкой по складам и указать в условии
ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ИмяРегистра.Склад) = 5
---
Ну самое простое выбрать номенклатуру по остаткам регистра накопления с группировкой по складам и указать в условии
ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ИмяРегистра.Склад) = 5
---
А завтра в системе появится еще один (шестой) склад, и придется переписывать запрос...
---
Можно вначале вычислять количество складов
Я предложила идею, реализацию можно сделать как угодно
---
И как? Отдельным запросом к БД? Чтобы потом программно изменять текст запроса или устанавливать его новые параметры?
---
Не поленилась я)
Мертвого достанешь своими язвительными замечаниями

```1c
    ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Склады.Ссылка) КАК КоличествоСкладов
    ПОМЕСТИТЬ ВТ_Склады
    ИЗ
    Справочник.Склады КАК Склады
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыНаСкладахОстатки.Склад) КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ВТ_Склады.КоличествоСкладов
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Склады КАК ВТ_Склады
    ПО (ИСТИНА)

    СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура,
    ВТ_Склады.КоличествоСкладов

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыНаСкладахОстатки.Склад) = ВТ_Склады.КоличествоСкладов
```
---
а это точно на определенный момент работает?
---
О каком моменте речь, что-то я к вечеру туплю?
---
о моменте остатков, вчера были одни остатки, сегодня уже другие!
---
А почему нет, добавить параметр не проблема, не было конкретики в вопросе, поэтому я взяла текущий остаток
---
...
---
Да, т.к. запрос по всей номенклатуре, в отличии от вашего
---
я уже посыпал голову пеплом!
---
Я не успеваю за ответами следить;)
---
Надо смотреть текущие оперативные остатки, судя по тексту ТС.
---
Мертвого достанешь своими язвительными замечаниями Дык это и есть самая правильная помощь, чтобы вопрошающий начал думать и понимать смысл происходящего )))
Кто хочет - начнет думать, искать решения, и станет специалистом.
Кто не хочет - будет попрошайничать "дайте мне код".

1. У тебя в запросе нет количества номенклатуры.
2. Непонятный агрегат КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыНаСкладахОстатки.Склад) КАК Склад
---
У тебя в запросе нет количества номенклатуры
Количество зачем?
вопрос был: запрос который выведет только те позиции номенклатуры которые есть на ВСЕХ складах.

(14) Непонятный агрегат КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыНаСкладахОстатки.Склад) КАК Склад
Это ответ на форуме, его следует оформлять согласно стандартам?
---
те позиции номенклатуры которые есть на ВСЕХ складах. Согласен, проглядел.
его следует оформлять согласно стандартам? Стандартов нет, есть только взаимоуважение. Одну строчку кода можно написать и обычным текстом (по моему скромному убеждению).
---
```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Склады.Ссылка КАК Ссылка,
    | Склады.Представление КАК Представление,
    | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
    |ИЗ
    | Справочник.Склады КАК Склады
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&МоментВремени, Номенклатура = &Номенклатура) КАК ОстаткиНоменклатурыОстатки
    | ПО Склады.Ссылка = ОстаткиНоменклатурыОстатки.Склад";

    Запрос.УстановитьПараметр("МоменВремени", МоментВремени());
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Если ВыборкаДетальныеЗаписи.КоличествоОстаток = 0 Тогда
    Отказ = Истина;
    КонецЕсли;
    КонецЦикла;
```
---
И как это поможет? Надо сначала получить таблицу складов, по которой потом делать отдельное внутреннее соединение с таблицей остатков. (С постусловием ГДЕ НЕ Склад ЕСТЬ NULL)

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

    Запрос.УстановитьПараметр("МоменВремени", МоментВремени());
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

    РезультатЗапроса = Запрос.Выполнить();

    Если РезультатЗапроса.Пустой() Тогда
    // все отлично
    КонецЕсли;
```
---
Что это? В результате нужны позиции номенклатуры, а не список складов.
---
да, лопухнулся
---
Не сочти мой плюс за радость. Это профессиональное уважение к коллегам, которые имеют силу воли признать ошибку.
Ошибаются все!
---
с кем не бывает, как говорят и на старуху, бывает проруха!

Автор что то пропал.
---
Лего собирает...
---
Всем спасибо, получилось все.)