Всем привет друзья.
Хочу получить данные из справочника и его Тч и документа.
Финальная версия через вложенный запрос. Делал и через временные таблицы.
ход действий.
1. Получаю даные из справочника и его тч.
2. Получаю данные из документа
3. Обьеденяю по ссылки
4. Получпаю что строка запроса умножается на каждую строку другова запроса. По итогу получаю декартово произведение.
Как выйти из этого? Можно конечно сгруппировать но хотелось бы для начала понять почему так?

```1c
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ДанныеПоНакладным.ПолныйНомерЖдНакладной,
    ДанныеПоНакладным.АдресПолучателя,
    ДанныеПоНакладным.Налив,
    ДанныеПоПаспортам.Ответственый,
    ДанныеПоПаспортам.ДатаИВремя,
    ДанныеПоПаспортам.Отправка,
    ДанныеПоПаспортам.Статус,
    ДанныеПоПаспортам.СсылкаДок
    ИЗ
    (ВЫБРАТЬ
    ЖДНакладная.ПрефиксНомераЖДНакладной + ЖДНакладная.НомерЖДНакладной КАК ПолныйНомерЖдНакладной,
    ЖДНакладная.Получатель.АдресПаспортаКачества КАК АдресПолучателя,
    ЖДНакладная.Налив КАК Налив
    ИЗ
    Документ.ЖДНакладная КАК ЖДНакладная
    ГДЕ
    (ЖДНакладная.Статус = &Статус0
    ИЛИ ЖДНакладная.Статус = &Статус1
    ИЛИ ЖДНакладная.Статус = &Статус2)
    И ЖДНакладная.Получатель.ОтправкаПоПочте = ИСТИНА
    И ЖДНакладная.Налив.Ссылка = &СсылкаНаНалив) КАК ДанныеПоНакладным
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ПаспортаКачества.Ответственый КАК Ответственый,
    ПаспортаКачества.ДатаИВремя КАК ДатаИВремя,
    ПаспортаКачестваТАбличнаяЧастьПК.Отправка КАК Отправка,
    ПаспортаКачестваТАбличнаяЧастьПК.Статус КАК Статус,
    ПаспортаКачества.СсылкаДок КАК СсылкаДок
    ИЗ
    Справочник.ПаспортаКачества.ТАбличнаяЧастьПК КАК ПаспортаКачестваТАбличнаяЧастьПК
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПаспортаКачества КАК ПаспортаКачества
    ПО ПаспортаКачестваТАбличнаяЧастьПК.Ссылка = ПаспортаКачества.Ссылка
    ГДЕ
    ПаспортаКачества.СсылкаДок = &СсылкаНаНалив) КАК ДанныеПоПаспортам
    ПО ДанныеПоНакладным.Налив = ДанныеПоПаспортам.СсылкаДок
```
---
Решил так.
Запрос оставил как есть с дублями, написал функцию которая удаляет дубли.
---
Для начала покажите, что возвращает этот запрос:

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

и этот запрос:

```1c
    ВЫБРАТЬ
    ЖДНакладная.ПрефиксНомераЖДНакладной + ЖДНакладная.НомерЖДНакладной КАК ПолныйНомерЖдНакладной,
    ЖДНакладная.Получатель.АдресПаспортаКачества КАК АдресПолучателя,
    ЖДНакладная.Налив КАК Налив
    ИЗ
    Документ.ЖДНакладная КАК ЖДНакладная
    ГДЕ
    (ЖДНакладная.Статус = &Статус0
    ИЛИ ЖДНакладная.Статус = &Статус1
    ИЛИ ЖДНакладная.Статус = &Статус2)
    И ЖДНакладная.Получатель.ОтправкаПоПочте = ИСТИНА
    И ЖДНакладная.Налив.Ссылка = &СсылкаНаНалив
```

В первом запросе вы обращаетесь к ТЧ, если у неё несколько строк, то и выборка будет умножаться на количество строк в ТЧ. Воспользуйтесь конструкцией "РАЗЛИЧНЫЕ", как вариант.

Вот так делать тоже не надо. Дополнительное обращение через точку.

```1c
    ЖДНакладная.Налив.Ссылка = &СсылкаНаНалив
```

Ну и вот это тоже почитайте: https://its.1c.ru/db/v8std/browse/13/-1/26/28
---
Прикрепил результат первого и второго.
вариант с различными это что то вроде костыля. Но даже он не сработал

```1c
    ЖДНакладная.Налив.Ссылка = &СсылкаНаНалив
```
 - это не заметил даже, скорее всего поторопился вот так и вышло.
---
вариант с различными это что то вроде костыля
С чего вы взяли, что это костыль? Вы умеете как-то по-другому выбирать уникальные значения из ТЧ?

Но даже он не сработал
Что возвращает второй запрос с использованием различных?
---
Оба запроса возвращают коректное количество строк до соединения
---
Кажеться понимаю как это работает.
НА кажду строку не табличной части Мы имеет 4 строки табличной части.
Осталось понять, решается ли как то это метотами запроса
---
Правильно ли тогда будет? Получить данные из ТаблЧ, выгрузить в таблицу значений.
ЗАпросом получить нужные значения таблицу значений с полученными строками использовать как источних данных. Соеденить по нужным полям?
---
Соеденить по нужным полям? Это по каким? У вас 2 несвязанных списка: документы ЖДНакладная и ТЧ паспорта качества. Да, их все объединяет документ Налив, но между собой строки таблиц никак не связаны.
---
Связаны. У Табл части есть груз, и у документа есть груз. Ну и сам налив
---
Есть еще одно связаное поле
---
Ну так и связывайте по Наливу и Грузу 2 временные таблицы.
---
```1c
    ВЫБРАТЬ
    ПаспортаКачества.Ответственый КАК Ответственый,
    ПаспортаКачества.ДатаИВремя КАК ДатаИВремя,
    ПаспортаКачестваТАбличнаяЧастьПК.Отправка КАК Отправка,
    ПаспортаКачестваТАбличнаяЧастьПК.Статус КАК Статус,
    ПаспортаКачества.СсылкаДок КАК СсылкаДок,
    ПаспортаКачестваТАбличнаяЧастьПК.Груз
    ПОМЕСТИТЬ Справочник
    ИЗ
    Справочник.ПаспортаКачества.ТАбличнаяЧастьПК КАК ПаспортаКачестваТАбличнаяЧастьПК
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПаспортаКачества КАК ПаспортаКачества
    ПО ПаспортаКачестваТАбличнаяЧастьПК.Ссылка = ПаспортаКачества.Ссылка
    ГДЕ
    ПаспортаКачества.СсылкаДок = &СсылкаНаНалив
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ЖДНакладная.ПрефиксНомераЖДНакладной + ЖДНакладная.НомерЖДНакладной КАК ПолныйНомерЖдНакладной,
    ЖДНакладная.Получатель.АдресПаспортаКачества КАК АдресПолучателя,
    ЖДНакладная.Налив КАК Налив,
    ЖДНакладная.Груз
    ПОМЕСТИТЬ Документ
    ИЗ
    Документ.ЖДНакладная КАК ЖДНакладная
    ГДЕ
    (ЖДНакладная.Статус = &Статус0
    ИЛИ ЖДНакладная.Статус = &Статус1
    ИЛИ ЖДНакладная.Статус = &Статус2)
    И ЖДНакладная.Получатель.ОтправкаПоПочте = ИСТИНА
    И ЖДНакладная.Налив.Ссылка = &СсылкаНаНалив
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Справочник.Ответственый,
    Справочник.ДатаИВремя,
    Справочник.Отправка,
    Справочник.Статус,
    Справочник.СсылкаДок,
    Документ.ПолныйНомерЖдНакладной,
    Документ.АдресПолучателя,
    Документ.Налив,
    Документ.Груз
    ИЗ
    Справочник КАК Справочник
    ЛЕВОЕ СОЕДИНЕНИЕ Документ КАК Документ
    ПО Справочник.СсылкаДок = Документ.Налив
    И Справочник.Груз = Документ.Груз
```

Неработает так
---
Какие значения в колонке Груз? Скорее всего не уникальные, то есть связка Налив+Груз не уникальна для строк таблиц. Ищите дополнительные поля связи, чтобы одной строке первой таблицы соответствовала только одна строка из второй, если задача избавиться от перемножения строк.
---
ссылка на номенклатуру.
---
Особо уже не с чем связвать, все что было связал
---
РАЗЛИЧНЫЕ
добавь в последний запрос
---
РАЗЛИЧНЫЕ
добавь в последний запрос
Добавил, записей стало уже 6, сгрупппировал. Записей стало столько же
---
Решил так.
Запрос оставил как есть с дублями, написал функцию которая удаляет дубли.
---
Иначе Я не понимаю как это должно работать