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

СГРУППИРОВАТЬ ПО
 ТоварыНаСкладахОстаткиИОбороты.Склад,
 ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
 ПеремещениеТоваров.Ссылка
---
использовать детализацию "регистратор" вместо "ГОД" виртуальной таблицы ОстаткиИОбороты
---
а лучше так чтоб всегда за весь период

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

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

По-другому - никак.

Вы точно уверены, что вам нужно кросс-соединение таблицы остатков с таблицей документов?
---
И Почему работает в 20 раз медленнее чем универсальный отчет?
---
а перемещение для чего без связи с регистром?
---
И Почему работает в 20 раз медленнее чем универсальный отчет?
Зачем получать ВСЕ перемещения? И потом месье не знает про параметры отбора в виртуальных таблицах?
---
ГДЕ убирать
---
Потому что у вас кросс-соединение таблиц
---
Мне нужно получить остаток и
откуда он образован(т.е. документ регистратор прихода)
---
откуда он образован(т.е. документ регистратор прихода)Этого в регистре товаров на складе не получить, нормальным способом.
---
Зачем вообще нужнен конструктор запросов, когда все равно всегда приходится запрос вручную писать?
---
а как тогда без кросс соединения получить регистратор? как псевдоним он не заводится
а если получаю записи регистра без остатки И обороты, то получаю простые единички(т.е. записи)
---
использовать детализацию "регистратор" вместо "ГОД" виртуальной таблицы ОстаткиИОбороты
---
не выдает в результате ссылку на документ регистратора
---
потому что необходимо использовать детализацию выборки до регистратора, а не до года, как делаете вы.
Посмотрите внимательно на текст запроса в (6) и сравните со своим.

Кросс-соединение таблиц уберите вообще.
---
https://1s83.info/koding/ostatki-i-oborotyi-s-registratorami-1s.html

блин че без объединения таблиц никак?
---
+
---
ВЫБРАТЬ
 ТоварыНаСкладахОстаткиИОбороты.Склад,
 ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
 ТоварыНаСкладахОстаткиИОбороты.Регистратор
ИЗ
 РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, Движения, Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
---
SUPER
Ща Смку дам
---
низкий поклон тебе умный человек ! не первый раз помогаешь!
---
Время формирования 5 сек (быстрее Универсального)
---
я еще вот так добавил
ВЫБРАТЬ
 ТоварыНаСкладахОстаткиИОбороты.Склад,
 ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
 ТоварыНаСкладахОстаткиИОбороты.Регистратор
ИЗ
 РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, Движения, Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
 ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток >0
---
а лучше так чтоб всегда за весь период

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