Доброго дня, коллеги.

Не понимаю, какая связь между таблицами Товары и ВозвращенныеТовары документа "ОтчетОРозничныхПродажах".

Ковыряю обработку "ЗакрытиеСмены"; смотрю заполнение ТЧ:
Запрос товаров:

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

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

    СГРУППИРОВАТЬ ПО
    Док.ДисконтнаяКарта,
    Док.Склад,
    Док.Номенклатура,
    Док.Характеристика,
    Док.Продавец,
    Док.СтавкаНДС,
    Док.Цена,
    Док.ИспользоватьСерийныеНомера,
    Док.Упаковка,
    ВЫБОР
    КОГДА Док.ИспользоватьСерийныеНомера
    ТОГДА Док.Ссылка
    ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
    КОНЕЦ,
    ВЫБОР
    КОГДА Док.ИспользоватьСерийныеНомера
    ТОГДА Док.КлючСвязиСерийныхНомеров
    ИНАЧЕ 0
    КОНЕЦ,
    Док.КодСтроки,
    Док.ЗаказПокупателя,
    Док.Резервировать,
    ВЫБОР
    КОГДА Док.ЭтоВозвратПослеЗакрытияСмены
    ТОГДА Док.АналитикаХозяйственнойОперации
    ИНАЧЕ ЗНАЧЕНИЕ(Справочник.АналитикаХозяйственныхОпераций.ПустаяСсылка)
    КОНЕЦ

    ИМЕЮЩИЕ
    СУММА(ВЫБОР
    КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
    ТОГДА Док.Количество
    ИНАЧЕ -Док.Количество
    КОНЕЦ) <> 0
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ТаблицаТовары.ИспользоватьСерийныеНомера КАК ИспользоватьСерийныеНомера,
    ТаблицаТовары.ДисконтнаяКарта КАК ДисконтнаяКарта,
    ТаблицаТовары.Склад КАК Склад,
    ТаблицаТовары.Номенклатура КАК Номенклатура,
    ТаблицаТовары.Характеристика КАК Характеристика,
    ТаблицаТовары.Продавец КАК Продавец,
    СУММА(ТаблицаТовары.Количество) КАК Количество,
    ТаблицаТовары.Цена КАК Цена,
    ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
    СУММА(ТаблицаТовары.СуммаНДС) КАК СуммаНДС,
    СУММА(ТаблицаТовары.Сумма) КАК Сумма,
    ТаблицаТовары.Упаковка КАК Упаковка,
    СУММА(ТаблицаТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
    ТаблицаТовары.КодСтроки КАК КодСтроки,
    ТаблицаТовары.ЗаказПокупателя КАК ЗаказПокупателя,
    ТаблицаТовары.Резервировать КАК Резервировать,
    ТаблицаТовары.АналитикаХозяйственнойОперации КАК АналитикаХозяйственнойОперации
    ИЗ
    ТаблицаТовары КАК ТаблицаТовары

    СГРУППИРОВАТЬ ПО
    ТаблицаТовары.Склад,
    ТаблицаТовары.ДисконтнаяКарта,
    ТаблицаТовары.Номенклатура,
    ТаблицаТовары.Характеристика,
    ТаблицаТовары.СтавкаНДС,
    ТаблицаТовары.ИспользоватьСерийныеНомера,
    ТаблицаТовары.Продавец,
    ТаблицаТовары.Упаковка,
    ТаблицаТовары.Цена,
    ТаблицаТовары.КодСтроки,
    ТаблицаТовары.ЗаказПокупателя,
    ТаблицаТовары.Резервировать,
    ТаблицаТовары.АналитикаХозяйственнойОперации
    ;
```

Запрос возвратов:

```1c
    ВЫБРАТЬ
    ТоварыБезКомплектов.ДисконтнаяКарта КАК ДисконтнаяКарта,
    ТоварыБезКомплектов.Склад КАК Склад,
    ТоварыБезКомплектов.Номенклатура КАК Номенклатура,
    ТоварыБезКомплектов.Характеристика КАК Характеристика,
    ТоварыБезКомплектов.Продавец КАК Продавец,
    ТоварыБезКомплектов.Количество КАК Количество,
    ТоварыБезКомплектов.АналитикаХозяйственнойОперации КАК АналитикаХозяйственнойОперации,
    ТоварыБезКомплектов.Цена КАК Цена,
    ТоварыБезКомплектов.СтавкаНДС КАК СтавкаНДС,
    ТоварыБезКомплектов.СуммаНДС КАК СуммаНДС,
    ТоварыБезКомплектов.Сумма КАК Сумма,
    ТоварыБезКомплектов.Упаковка КАК Упаковка,
    ТоварыБезКомплектов.КоличествоУпаковок КАК КоличествоУпаковок
    ИЗ
    (ВЫБРАТЬ
    Док.Ссылка.ДисконтнаяКарта КАК ДисконтнаяКарта,
    Док.Склад КАК Склад,
    Док.Номенклатура КАК Номенклатура,
    Док.Характеристика КАК Характеристика,
    Док.Продавец КАК Продавец,
    СУММА(Док.Количество) КАК Количество,
    Док.Ссылка.АналитикаХозяйственнойОперации КАК АналитикаХозяйственнойОперации,
    Док.Цена КАК Цена,
    Док.СтавкаНДС КАК СтавкаНДС,
    СУММА(Док.СуммаНДС) КАК СуммаНДС,
    СУММА(Док.Сумма) КАК Сумма,
    Док.Упаковка КАК Упаковка,
    СУММА(Док.КоличествоУпаковок) КАК КоличествоУпаковок
    ИЗ
    Документ.ЧекККМ.Товары КАК Док
    ГДЕ
    Док.Ссылка.ВидОперации = &ВидОперацииВозврат
    И Док.Ссылка.КассаККМ = &КассаККМ
    И Док.Ссылка.Проведен
    И НЕ Док.Ссылка.ОперацияСДенежнымиСредствами
    И НЕ Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
    И НЕ Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Аннулированный)
    И НЕ Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Отложенный)

    СГРУППИРОВАТЬ ПО
    Док.Ссылка.ДисконтнаяКарта,
    Док.Склад,
    Док.Номенклатура,
    Док.Характеристика,
    Док.Продавец,
    Док.Ссылка.АналитикаХозяйственнойОперации,
    Док.СтавкаНДС,
    Док.Цена,
    Док.Упаковка) КАК ТоварыБезКомплектов
```

Судя по запросу я думал, что ТЧ "ВозвращенныеТовары" мне для выгрузки не нужна, т.к. чеки с операцией "Возврат" также попадают в "Товары" с отрицательными показателями, но оказывается, что не все так просто!
Но тогда почему бывает, что товар в ТЧ "ВозвращенныеТовары" имеется, а в "Товары" его нет???
---
Кажется, что дело в этом:

```1c
    ИМЕЮЩИЕ
    СУММА(ВЫБОР
    КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
    ТОГДА Док.Количество
    ИНАЧЕ -Док.Количество
    КОНЕЦ) <> 0
```

Получается, что если товар был продан N раз и возвращен N раз в текущей смене, то он не попадёт в ТЧ "Товары"?! :) Мдаааа
---
А можно подробней? Код это хорошо, но в чём вопрос то?
---
Мне для выгрузки в отраслевую конфу нужно. Анализирую данные и наткнулся на эту шляпу. Думал, что достаточно ТЧ "Товары", а оказывается, что нет.
---
Кажется, что дело в этом:

```1c
    ИМЕЮЩИЕ
    СУММА(ВЫБОР
    КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
    ТОГДА Док.Количество
    ИНАЧЕ -Док.Количество
    КОНЕЦ) <> 0
```

Получается, что если товар был продан N раз и возвращен N раз в текущей смене, то он не попадёт в ТЧ "Товары"?! :) Мдаааа
---
Хотя, там же группировка ещё по коду строки. Получается вообще жесть.