Оптимизировать можно, но как ни странно, основная проблема здесь не с выборкой, а с сортировкой! Поле "ХозрасчетныйОстаткиИОбороты.Субконто1" скорее всего имеет составной тип, поэтому для того чтобы собрать представления объектов
в запрос включается поле вида:
CASE
WHEN #V8TmpTable2_Q_000_T_001._Value1_TYPE = 0x08 AND #V8TmpTable2_Q_000_T_001._Value1_RTRef = 0x000021DB
THEN CAST(_Reference8667._Description AS NVARCHAR(150))
WHEN #V8TmpTable2_Q_000_T_001._Value1_TYPE = 0x08 AND #V8TmpTable2_Q_000_T_001._Value1_RTRef = 0x0000092A
THEN CAST(_Reference2346._Description AS NVARCHAR(150))
.
.
.
WHEN #V8TmpTable2_Q_000_T_001._Value1_TYPE = 0x08 AND #V8TmpTable2_Q_000_T_001._Value1_RTRef = 0x00000004
THEN _Reference4._Description
WHEN #V8TmpTable2_Q_000_T_001._Value1_TYPE = 0x08 AND #V8TmpTable2_Q_000_T_001._Value1_RTRef = 0x0000000A
THEN CAST(_Reference10._Description AS NVARCHAR(150))
ELSE CAST(NULL AS NVARCHAR(150))
END _sf_1
(_sf_1 - sort field 1)
Значительно улучшить ситуацию можно преобразовав поле "Субконто1" (составного типа) к одному типу (Справочник.Контрагенты). После этого можно производить сортировку.
Новый текст запроса будет выглядеть так:
ВЫБРАТЬ
ВложенныйЗапрос.Счет,
ВложенныйЗапрос.Контрагент,
ВложенныйЗапрос.Договор,
ВложенныйЗапрос.НачДт,
ВложенныйЗапрос.НачКт,
В ложенныйЗапрос.ОБДт,
ВложенныйЗапрос.ОБКт,
ВложенныйЗапрос.КонДт,
ВложенныйЗапрос.КонКт
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент,
ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК НачДт,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК НачКт,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК ОБДт,
ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК ОБКт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК КонДт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК КонКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
&ДатаНач,
&ДатаКон,
,
,
Счет = &Сч_62_1
ИЛИ Счет = &Сч_62_2,
,
) КАК ХозрасчетныйОстаткиИОбороты) КАК ВложенныйЗапрос
УПОРЯДОЧИТЬ ПО
ВложенныйЗапрос.Контрагент.Наименование
В результате:
На большой базе первый запрос за 2008 год (итоги рассчитаны на 01.08.2008) выполнялся 12,634 секунды;
второй вариант в тех-же условиях - 6,845 сек., что почти в 2 раза лучше.
P.S.
Запрос можно оптимизировать и дальше, но это уже ловля блох. Значительный прирост производительности даст только уход от выборки средствами 1С и обращение к данным на низком уровне.