Есть Табличная часть, 4 колонки, последняя количество. Первые Три:
Номенклатура
Номенклатурная Группа
Плановая Группа

Последние две это группировки Номенклатуры

И так пользователь заполняет табличную часть
Он может заполнить Номенклатуру и тогда нам надо вытащить Эту номенклатуру и указанное ей количество
Он может Заполнить Номенклатурную группу и нам тогда надо вытащить все номенклатуры этой номенлактурной группы (если не было ранее более узких группировок) и количество указать каждой из них
ОН может задать Плановую Группу и тогда необходимо сделать тоже самое что и для номенклатурной группы
А может Задать и Номенклатурную группу и Плановую и тогда нам надо выбрать только номенклатуру для которой верен данный отбор.

Для примера
Товар 1,2 Входит в НГ1 и ПГ1
Товар 3 Входит В НГ1, ПГ2
Товар 4 Входить ПГ2

Пользователь ввел
Товар 1 Цена 1
НГ1. ПГ1 Цена 2
ПГ 2 Цена 3

Мы должны получить
Товар 1 Цена 1
Товар 2 Цена 2
Товар 3 Цена 3
Товар 4 Цена 3

Можно ли это сделать запросом? и помогите как
---
И так кажись я нашла решение этого вопроса, будем расставлять приоритеты, если Номенклатура Заполнена, то приоритет = 1 если заполнено ЦГ и ПГ тогда приоритет = 2, Если Заполнена только ПГ тогда приоритет 3, если заполнено только НГ то приоритет 4.
А уж потом раскрою по номенклатурно и соединю в одну ТЗ по приоритетам для исключения задвоений номенклатуры. Вроде все красиво.

(2) Справочник.Номенклатура КАК Номенклатура
ПО (ТабЧасть.Номенклатура.Ссылка Есть NULL ИЛИ Номенклатура.Ссылка = ТабЧасть.Номенклатура)
Это вы хотите выбрать всю номенклатуру. Но это не совсем решение.
---
```1c
    ВЫБРАТЬ *
    ИЗ ТабЧасть КАК ТабЧасть
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
    ПО (ТабЧасть.Номенклатура.Ссылка Есть NULL ИЛИ Номенклатура.Ссылка = ТабЧасть.Номенклатура)
    И (ТабЧасть.НоменклатурнаяГруппа.Ссылка Есть NULL ИЛИ Номенклатура.Ссылка В ИЕРАРХИИ (ТабЧасть.НоменклатурнаяГруппа))
    И (ТабЧасть.ПлановаяГруппа.Ссылка Есть NULL ИЛИ Номенклатура.Ссылка В ИЕРАРХИИ (ТабЧасть.ПлановаяГруппа))
```
---
И так кажись я нашла решение этого вопроса, будем расставлять приоритеты, если Номенклатура Заполнена, то приоритет = 1 если заполнено ЦГ и ПГ тогда приоритет = 2, Если Заполнена только ПГ тогда приоритет 3, если заполнено только НГ то приоритет 4.
А уж потом раскрою по номенклатурно и соединю в одну ТЗ по приоритетам для исключения задвоений номенклатуры. Вроде все красиво.

(2) Справочник.Номенклатура КАК Номенклатура
ПО (ТабЧасть.Номенклатура.Ссылка Есть NULL ИЛИ Номенклатура.Ссылка = ТабЧасть.Номенклатура)
Это вы хотите выбрать всю номенклатуру. Но это не совсем решение.
---
В смысле, всю номенклатуру?

1. Если заполнена номенклатура, выберется только эта номенклатура;
2. Если заполнено НГ, выберется только то, что в НГ;
3. Если заполнено ПГ, выберется только то, что в ПГ;
4. Если заполнено и НГ и ПГ, выберется только то, что попадает в ПГ и НГ одновременно.

Вроде так вам надо было.
---
прогоните ваш запрос по моему примеру и у вас не получиться получить то что мне нужно.
Так как возможны различные виды пересечений и ПГ и НГ и у них будет разная цена.
---
Лучше проверять на пустые значения явно, а не провоцировать лишние соединения (три лишних соединения) и проверять на NULL.
Это и читабельнее и эффективнее
---
на пустые ссылки я проверяю еще при записи, но пустые значения в ТЗ предусмотрены заданием на разработку.
---
я не это имел в виду. Доработанный вариант из (2), при условии что плановая и номенклатурные группы - элементы справочника номенклатура:

```1c
    ВЫБРАТЬ *
    ИЗ ТабЧасть КАК ТабЧасть
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Спр
    ПО ТабЧасть.Номенклатура = Спр.Ссылка
    ИЛИ (ТабЧасть.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) И ТабЧасть.ПлановаяГруппа = Спр.ПлановаяГруппа И ТабЧасть.НоменклатурнаяГруппа = Спр.НоменклатурнаяГруппа)
    ИЛИ (ТабЧасть.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) И ТабЧасть.ПлановаяГруппа = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) И ТабЧасть.НоменклатурнаяГруппа = Спр.НоменклатурнаяГруппа)
    ИЛИ (ТабЧасть.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) И ТабЧасть.ПлановаяГруппа = Спр.ПлановаяГруппа И ТабЧасть.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
```
---
(4)

Да все понятно, но ваш запрос не прокатывает если у нас Соединение ПГ1/НГ1 и ПГ2/НГ1, но отдельно НГ1 не указана.
Тогда нужно отобрать только номенклатуру в соединении, а все что находится в НГ1 но не попадает В ПГ1 или ПГ2 вообще не выбирать.
Т.е из сообщения 4 У вас есть только п.1 и п.4.
---
Моя не понимать. Могут быть накладки, если ПГ и НГ не у всей номенклатуры заполнены в справочнике. Тогда нужно еще доп-условия добавлять.
А больше я проблем не вижу. Как объяснили, так и ответили :)
---
У неё приоритеты по срабатыванию правил соединения. В (1) есть пример, когда соединение по номенклатуре является более приоритетным, чем соединение по группе.
Можно тогда условие сделать через "ВЫБОР КОГДА"... А можно юнионы с весами приоритетов. Тоже решение.
---
Нее... Сан Саныч меня поправил. Вот это место: ТабЧасть.Номенклатура.Ссылка Есть NULL из-за неявного соединения со справочником номенклатуры будет работать медленнее, чем ТабЧасть.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка).