Здравствуйте. После отрабатывания запроса, некоторые суммы у номенклатуры равны нулю, чтобы этот ноль заполнить значением было решено запрос поместить во временную таблицу, ее соединить с регистром сведений, вытянуть оттуда цену. Но проблема возникла в том, что происходит задвоение номенклатуры. В чем может быть проблема?

```1c
    ВЫБРАТЬ
    ОстаткиТоваров.Номенклатура,
    ОстаткиТоваров.ХарактеристикаНоменклатуры,"
    +?(УчитыватьСерии, "
    ОстаткиТоваров.СерияНоменклатуры,", ") + "
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХранения,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентЕдиницыХранения,
    ОстаткиТоваров.Качество,
    ОстаткиТоваров.Склад,
    СУММА(ОстаткиПартий.СтоимостьОстаток) КАК Стоимость,
    СУММА(ОстаткиТоваров.КоличествоОстаток) КАК Количество,
    ВЫБОР
    КОГДА (СУММА(ОстаткиПартий.КоличествоОстаток) = 0)
    ИЛИ (СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL) ТОГДА
    0
    ИНАЧЕ
    СУММА(ОстаткиПартий.СтоимостьОстаток)*СУММА(ОстаткиТоваров.КоличествоОстаток)
    / СУММА(ОстаткиПартий.КоличествоОстаток)
    КОНЕЦ КАК Сумма
    ПОМЕСТИТЬ ВТОстатки
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, {Склад})

    КАК ОстаткиТоваров

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Период, Склад В (&ПартионныйСклад)) КАК ОстаткиПартий
    ПО
    ОстаткиТоваров.Номенклатура = ОстаткиПартий.Номенклатура
    И ОстаткиТоваров.ХарактеристикаНоменклатуры = ОстаткиПартий.ХарактеристикаНоменклатуры"
    +?(УчитыватьСерии, "
    И ОстаткиТоваров.СерияНоменклатуры = ОстаткиПартий.СерияНоменклатуры", ") + "
    И ОстаткиТоваров.Качество = ОстаткиПартий.Качество

    {ГДЕ ОстаткиТоваров.Номенклатура КАК Номенклатура,
    ОстаткиТоваров.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа}

    СГРУППИРОВАТЬ ПО
    ОстаткиТоваров.Номенклатура,
    ОстаткиТоваров.Склад,
    ОстаткиТоваров.ХарактеристикаНоменклатуры,"
    +?(УчитыватьСерии, "
    ОстаткиТоваров.СерияНоменклатуры,", ") + "
    ОстаткиТоваров.Качество
    ;
    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТОстатки.Номенклатура КАК Номенклатура,
    ВТОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,"
    +?(УчитыватьСерии, "
    ВТОстатки.СерияНоменклатуры,", ") + "
    ВТОстатки.ЕдиницаХранения КАК ЕдиницаХранения,
    ВТОстатки.КоэффициентЕдиницыХранения КАК КоэффициентЕдиницыХранения,
    ВТОстатки.Качество КАК Качество,
    ВТОстатки.Склад КАК Склад,
    ВТОстатки.Стоимость КАК Стоимость,
    ВТОстатки.Количество КАК Количество,
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
    ВЫБОР
    КОГДА ВТОстатки.Сумма = 0
    ТОГДА ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена * ВТОстатки.Количество
    ИНАЧЕ ВТОстатки.Сумма
    КОНЕЦ КАК СУММА
    ИЗ
    ВТОстатки КАК ВТОстатки
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних (, ТипЦен.ТипЦеныНоменклатуры = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.Закупочная) ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
    ПО ВТОстатки.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
    И ВТОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры
```
---
Я думаю, что надо в соединении условие прописать. При котором соединять надо только строки с нулевыми значениями.

```1c
    ВЫБОР
    КОГДА ВТОстатки.Сумма = 0
    ТОГДА ВТОстатки.Номенклатура =
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
    КОНЕЦ
    И
    ВЫБОР
    КОГДА ВТОстатки.Сумма = 0
    ТОГДА ВТОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры
    КОНЕЦ
```

Как то так должно быть.
---
Добавь "Различные" после выбрать
---
не помогает, пробовала
---
Если "Различные" не помогает, то значит строки результата запроса не идентичны.
---
Я думаю, что надо в соединении условие прописать. При котором соединять надо только строки с нулевыми значениями.

```1c
    ВЫБОР
    КОГДА ВТОстатки.Сумма = 0
    ТОГДА ВТОстатки.Номенклатура =
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
    КОНЕЦ
    И
    ВЫБОР
    КОГДА ВТОстатки.Сумма = 0
    ТОГДА ВТОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры
    КОНЕЦ
```

Как то так должно быть.
---
а можете,пожалуйста, подсказать как правильно в соединение это вставить нужно
---
так получилось, но появилась новая проблема в том, что запрос долго стал отрабатывать
---
значит, в одной из таблиц бывает больше одной пары "Номенклатура - характеристика".
Надо взять такой товар, сделать по нему отбор, вывести все поля запроса и посмотреть, какого условия не хватает.
---
жуть
---
Сейчас временная таблица имеет вид и время выполнение увеличилось, как можно исправить?

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