Добрый день, помогите парни, никак не могу победить остатки, чтобы корректно их показывала СКД, делаю отчет для КА1:

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

    ИНДЕКСИРОВАТЬ ПО
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура
    ;

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

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары
    И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
    И (ВТ_ОстаткиОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.ОтПоставщика)
    ИЛИ ВТ_ОстаткиОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.Перемещение))

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ВыпускПродукции
    И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
    И ВТ_ОстаткиОбороты.Регистратор.СкладПолучатель = &Склад
    И ВТ_ОстаткиОбороты.Регистратор.СкладОтправитель В(&СкладОтправитель)

    ИНДЕКСИРОВАТЬ ПО
    Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура КАК Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот КАК ОборотРасхода
    ПОМЕСТИТЬ ВТ_Расход
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
    И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.Приход,
    ВТ_ОстаткиОбороты.Расход,
    ВТ_ОстаткиОбороты.КоличествоОборот
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ГДЕ
    ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
    И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад

    ОБЪЕДИНИТЬ ВСЕ

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

    ИНДЕКСИРОВАТЬ ПО
    Номенклатура
    ;

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

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Расход.Регистратор
    ИЗ
    ВТ_Расход КАК ВТ_Расход)
    И ВТ_ОстаткиОбороты.Склад = &Склад

    ИНДЕКСИРОВАТЬ ПО
    Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ОстаткиОбороты.НомерСтроки,
    ВТ_ОстаткиОбороты.Регистратор,
    ВТ_ОстаткиОбороты.ПериодСекунда,
    ВТ_ОстаткиОбороты.ПериодМинута,
    ВТ_ОстаткиОбороты.ПериодЧас,
    ВТ_ОстаткиОбороты.ПериодДень,
    ВТ_ОстаткиОбороты.ПериодНеделя,
    ВТ_ОстаткиОбороты.ПериодДекада,
    ВТ_ОстаткиОбороты.ПериодМесяц,
    ВТ_ОстаткиОбороты.ПериодКвартал,
    ВТ_ОстаткиОбороты.ПериодПолугодие,
    ВТ_ОстаткиОбороты.ПериодГод,
    ВТ_ОстаткиОбороты.Склад,
    ВТ_ОстаткиОбороты.Номенклатура,
    ВТ_ОстаткиОбороты.Качество,
    ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
    ВТ_ОстаткиОбороты.СерияНоменклатуры,
    ВТ_ОстаткиОбороты.НачальныйОстаток,
    ВТ_Приход.ОборотПрихода,
    ВТ_Расход.ОборотРасхода,
    ВТ_Прочее.ОборотПрочее,
    ВТ_ОстаткиОбороты.КонечныйОстаток
    ИЗ
    ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Приход КАК ВТ_Приход
    ПО ВТ_ОстаткиОбороты.Номенклатура = ВТ_Приход.Номенклатура
    И ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры = ВТ_Приход.ХарактеристикаНоменклатуры
    И ВТ_ОстаткиОбороты.СерияНоменклатуры = ВТ_Приход.СерияНоменклатуры
    И ВТ_ОстаткиОбороты.Регистратор = ВТ_Приход.Регистратор
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Расход КАК ВТ_Расход
    ПО ВТ_ОстаткиОбороты.Номенклатура = ВТ_Расход.Номенклатура
    И ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры = ВТ_Расход.ХарактеристикаНоменклатуры
    И ВТ_ОстаткиОбороты.СерияНоменклатуры = ВТ_Расход.СерияНоменклатуры
    И ВТ_ОстаткиОбороты.Регистратор = ВТ_Расход.Регистратор
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Прочее КАК ВТ_Прочее
    ПО ВТ_ОстаткиОбороты.Номенклатура = ВТ_Прочее.Номенклатура
    И ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры = ВТ_Прочее.ХарактеристикаНоменклатуры
    И ВТ_ОстаткиОбороты.СерияНоменклатуры = ВТ_Прочее.СерияНоменклатуры
    И ВТ_ОстаткиОбороты.Регистратор = ВТ_Прочее.Регистратор
```

Мне в общем необходимо получить начальный остаток, приход по условию, расход по условию, прочее по условию и конечный остаток. Взял типовой отчет товары на складах, где все настроено в СКД, роли, измерения, остатки. Получается добавляются только ресурсы. Но при выводе получается ерунда в остатках. Может я и запрос шняговский написал?
---
Да, спасибо всем за направление поиска, разобрался, СКД "упростила" запрос, убирала Регистратор и ПериодСекунда, сделал их обязательными и все сошлось
---
левые соединения по регистратору оборотов мне кажутся подозрительными
когда подозрения будут развеяны - тогда и остатки будут ок.

Из практики: в наборах данных СКД с временными таблицами и отборами на номенклатуру меняйте синоним Номенклатура на что-то вроде ТоварОтбора чтобы умная СКД не накидала своих отборов в регистры оборотов.
---
а зачем так много объединений?
можно же проще - КоличествоОборот > 0 - расход, КоличествоОборот < 0 - приход

раз так в пять запрос сократится

а чтобы не именовать в СКД одинаковые поля по разному во временных таблицах, можно выполнить запрос отдельно, а в СКД уже передать готовый результат для пост обработки
---
Мне необходимо не по всем документам выводить результат, много нюансов по ведению документооборота в предприятии, что считают приходом от поставщика иностранного, русского, что возвратами, поэтому разбил так.
Можно было конечно условия в поля затолкать, типа взять типовой и добавить поле, так:

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

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

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

- в консоли все нормально - тогда смотрим уже в другой консоли (компоновки данных). СКД умеет "испортить" запрос по своему усмотрению
- в консоли все плохо - тогда нужно пройтись по типовым ошибкам связанным с получением данных из регистров (на диске ИТС). на 1й взгляд вроде таковых нет - но мало ли что.
---
Да, спасибо всем за направление поиска, разобрался, СКД "упростила" запрос, убирала Регистратор и ПериодСекунда, сделал их обязательными и все сошлось