Прошу помощи по получению остатков и оборотов из хозрасчетного регистра.

Вот этот запрос зависает, если выбрать в периоде 1-2 дня. Если выбран месяц, все замечательно срабатывает. Подскажите, пожалуйста, возможно ли это исправить? Если да, то как.

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

```1c
    ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Регистратор КАК Регистратор,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборот КАК Оборот,
    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК СкладПолучатель
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, Регистратор, , Счет.Код = "41.01", , Субконто2 = &СкладПолучатель) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
    ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
    И ХозрасчетныйОстаткиИОбороты.Регистратор.СкладОтправитель = &Отправитель
```
---
Запрос какой-то странный (мягко сказано)...
Если я выберу счет скажем 20 или 61.02 что он выдать должен?

Не кажется вам что запрос бы довести до ума не помешало бы...
Да и выносить &СкладПолучатель и &СкладОтправитель во вне Виртуальной таблицы - вторая ошибочка....
---
Склады я получаю из Регистратора. Потому что мне нужны перемещения с одного склада на другой.
А счет всегда один.
---
Если счет один , то зачем его в параметры пользователю давать?
---
А кто Вам сказал, что я его в параметры пользователю даю? Параметр заполняется автоматически, без помощи пользователя.
---
Счет.Код="41.01"
Это пример
---
Так отчет не формируется вообще
---
Ну отредактируйте его под свои данные.
Вы вообще его где запускаете в консоли?
Проверьте параметры если без консоли...
---
В данных, что выводит мой отчет в первоначальном виде, есть счет 41.02. На нем и протестировала. Счет я оставлю все же в том варианте, в котором было у меня изначально. Спасибо.
---
Например я использую всегда ОкончаниеПериода вместо вашего Конца...
ибо О идет по алфавиту после Н и пареметр Окончаниепериода будет в консоли ниже НачалоПериода, что логичнее.. ))))
---
Месторасположение параметров в консоли как-то влияет на скорость работы отчета?
---
а вы сами пробовали в параметрах виртуальной таблицы обратиться к регистратору, просто хочется посмотреть....
---
Итоги пересчитывали?
---
Какие итоги?
---
Тестирование и исправление - пересчет итогов
---
Процесс займет очень много времени... Мне это не подойдет, к сожалению...
---
https://infostart.ru/public/177171/
---
И зачем это к регистратору в Виртуальной обращаться?
ВУы хоть немного знакомы вообще с Хозрасчетным регистром?
---
Мне нужно документ получать, который эти перемещения регистрирует.
Как мне по-другому регистратор получить?
---
Да и выносить &СкладПолучатель и &СкладОтправитель во вне Виртуальной таблицы - вторая ошибочка....

(11) Хорошо, расскажите как мне в параметрах виртуальной таблицы установить отбор как у автора поста, вы ведь ему это предлагаете, ваша цитата, я поэтому и интересуюсь, как это сделать)
---
Люые фильтры установленные при формировании виртуальной таблицы работают гораздо быстрее, поэтому при возможноти их установить и пренебрежением к этой возможности вы получаете в результате страшные тормоза.
В случае с текущим запросом Субконто2 содержит Склад получатель и вы можете очень быстро отсечь возможно миллионы записей по другим складам
Этим нельзя пренебрегать!
---
Спасибо большое, Субконто2 действительно лучше поместить в параметры таблицы
---
Это я знаю) Но вы ведь пишете про СкладПолучатель и СкладОтправитель, то что нужно получателя искать по Субконто в виртуальной таблице это понятно, мне было интересно как вы планировали СкладОтправителя туда засунуть.
---
Вы будете удивллены, но и СкладОтправителя можно засунуть .
В зависимости ЧТО мы изначально ищем...
Есть ведь не только ОстаткиИОбороты. Но и ОборотыДтКт...
---
Это я тоже знаю, но нам ведь нужны не только обороты но и остаток, ОборотыДтКт не подходит...
---
иногда пользователи выводят подрят ,что под руку попало.
Конечный Остаток не нужен может быть но его все равно выводят...
Я и написал - в зависимости от того что мы ищем.
И по ходу вы просто придираетесь сейчас?
Задача была Ускорить запрос...
Перенос даже одного склада внутрь ускоряет запрос?

И самое интересное , что нужно всегда помнить , что фильтр внутри Виртуальной таблицы и снаружи - не идентичны!
Можно получить совершенно различные результаты тупым переносом фильтра внутрь...
Надеюсь и это вы тоже знаете... ;-)
---
Перенесла &СкладПолучатель в параметры виртуальной таблицы - все сработало! Счет оставила в прежнем виде.

YannikAlx, спасибо за помощь! :)
---
Ну счет как удобнее - в вашем случае не принципиально...
Но еще раз хочу акцентировать ваше внимание исключительно из образовательных целей на будущее
фильтр внутри Виртуальной таблицы и снаружи - не идентичны!
Можно получить совершенно различные результаты тупым переносом фильтра внутрь...

То есть вы должны понимать где и как накладывать фильтр правильно в каждом отдельном случае...
---
Я собственно с Вами и не спорила :)
Еще раз благодарю! :)
---
я не придираюсь, просто не часто доводилось работать с Хозрасчётной ВТ, знаю что к регистратору не обратиться в ВТ, но вы указали это как ошибка, поэтому и поинтересовался, как вы хотите эти два условия перекинуть в виртальную таблицу Хозрасчётов, но посыл был в том что если нужно и при определённых условиях, а это уже другие условия, другие таблицы итд
---
Наложите отбор на регистратор что-то вроде ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПеремещениеТоваров)
---
Вот так будет работать на порядок быстрее

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