Привет! Делаю управляемую форму списка документа. Вызываю функцию с запросом, возврат тз с результатом. В обычной форме тот же самый запрос выполняется 1.19 сек, а в уф 26,32 сек.

Подскажите, куда копать, чтобы ускорить это всё в уф?
УФ чистая, только заполнение списка (тз), и вызов серверной функции при активизации строки в списке (тз).

Заранее спасибо!

```1c
    ТаблицаИтоговПеремещения = ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет);
    ВсегоПоступилоПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоПоступило");
    ВсегоСписаноПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоСписано");

    &НаСервере
    Функция ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет)

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | 0 КАК ВсегоСписано,
    | СписаниеСРасчетногоСчета.СуммаДокумента КАК ВсегоПоступило
    |ИЗ
    | Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО СписаниеСРасчетногоСчета.СчетКонтрагента = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов
    | И СписаниеСРасчетногоСчета.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийСписаниеДенежныхСредств.ПереводНаДругойСчет)
    | И СписаниеСРасчетногоСчета.Организация = &Организация
    | И СписаниеСРасчетногоСчета.Дата МЕЖДУ &НачалоДня И &КонецДня
    | И СписаниеСРасчетногоСчета.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | ПриходныйКассовыйОрдер.СуммаДокумента,
    | 0
    |ИЗ
    | Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО ПриходныйКассовыйОрдер.Контрагент = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов
    | И ПриходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПКО.ПолучениеНаличныхВБанке)
    | И ПриходныйКассовыйОрдер.Организация = &Организация
    | И ПриходныйКассовыйОрдер.Дата МЕЖДУ &НачалоДня И &КонецДня
    | И ПриходныйКассовыйОрдер.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | 0,
    | РасходныйКассовыйОрдер.СуммаДокумента
    |ИЗ
    | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО РасходныйКассовыйОрдер.СчетОрганизации = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов
    | И РасходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ВзносНаличнымиВБанк)
    | И РасходныйКассовыйОрдер.Организация = &Организация
    | И РасходныйКассовыйОрдер.Дата МЕЖДУ &НачалоДня И &КонецДня
    | И РасходныйКассовыйОрдер.Проведен = ИСТИНА";

    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекДата));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекДата));
    Запрос.УстановитьПараметр("БанковскийСчетИтогов", ТекБанковскийСчет);
    Запрос.УстановитьПараметр("Организация", ТекБанковскийСчет.Владелец);
    Запрос.УстановитьПараметр("ВалютаРеглУчета", мВалютаРегламентированногоУчета);

    ТаблицаИтогов = Запрос.Выполнить().Выгрузить();

    Возврат ТаблицаИтогов;

    КонецФункции
```
---
ТаблицаИтоговПеремещения = ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет);
ВсегоПоступилоПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоПоступило");
ВсегоСписаноПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоСписано");

ТаблицаИтоговПеремещения это же таблица значения. Она для чего вообще на клиенте ?
Для банального получения итогов Поступило/Списано ?
Убери это.
Таблицы значений на клиенте быть вообще не должно.
Функцию передалай в &НаСервереБезКонтекста
т.к. ты при переходе между сервером и клиентом качаешь весь контекст формы туда обратно.
И итоги свои получай внутри функции, и возващай назад не таблицу значений, а готовые данные, например структуру с Итогами всего поступило и всего списано.
---
по поводу соединения со справочником - это делается в случае, когда нужны данные по всем эл. спр. даже если нет док

Это так не работает.
В запросе отбор на равно. Не предусмотрено получение остатков по всем счетам.
В запросе внутреннее соединение - нет документов, запрос будет пустой.

Соединение со справочником тут не нужно.

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

    РезультатыЗапроса = Запрос.ВыполнитьПакет();
    ТабРаз = РезультатыЗапроса[0].Выгрузить();
    ТабДва = РезультатыЗапроса[1].Выгрузить();
```
---
Добрый день.
Запрос как запрос, можно придраться к порядку отборов и отбору по организации, но не более.
Проблема в другом месте. Нужен замер всего кода и сам код.
Прогнал такой же запрос в серверной базе без отбора по счету, от начала ведения учета - 262 строки, почти 3 секунды.
---
в (5)
---
ТаблицаИтоговПеремещения = ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет);
ВсегоПоступилоПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоПоступило");
ВсегоСписаноПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоСписано");

ТаблицаИтоговПеремещения это же таблица значения. Она для чего вообще на клиенте ?
Для банального получения итогов Поступило/Списано ?
Убери это.
Таблицы значений на клиенте быть вообще не должно.
Функцию передалай в &НаСервереБезКонтекста
т.к. ты при переходе между сервером и клиентом качаешь весь контекст формы туда обратно.
И итоги свои получай внутри функции, и возващай назад не таблицу значений, а готовые данные, например структуру с Итогами всего поступило и всего списано.
---
Запрос с дурными соединениями со справочником изменять нельзя. Объединил два запроса с учетом ваших замечаний. Но все равно функция долго обрабатывается.

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

    &НаСервереБезКонтекста
    Функция ПолучитьИтогиНаСервереТЕСТ(ТекДата, ТекБанковскийСчет)

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

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

    Запрос.УстановитьПараметр("ДатаИтогов", ТекДата);
    Запрос.УстановитьПараметр("БанковскийСчетИтогов", ТекБанковскийСчет);
    Запрос.УстановитьПараметр("Организация", ТекБанковскийСчет.Владелец);
    Запрос.УстановитьПараметр("ВалютаРеглУчета", мВалютаРегламентированногоУчета);
    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекДата));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекДата));

    ТаблицаИтогов = Запрос.Выполнить().Выгрузить();

    Возврат Новый Структура("НачальныйОстаток, ВсегоПоступило, ВсегоСписано, КонечныйОстаток, ВсегоПоступило, ВсегоСписано",
    ТаблицаИтогов.Итог("НачальныйОстаток"), ТаблицаИтогов.Итог("ВсегоПоступило"), ТаблицаИтогов.Итог("ВсегоСписано"), ТаблицаИтогов.Итог("КонечныйОстаток"),
    ТаблицаИтогов.Итог("ВсегоПоступило"), ТаблицаИтогов.Итог("ВсегоСписано"));
    КонецФункции
```
---
по поводу соединения со справочником - это делается в случае, когда нужны данные по всем эл. спр. даже если нет док

Это так не работает.
В запросе отбор на равно. Не предусмотрено получение остатков по всем счетам.
В запросе внутреннее соединение - нет документов, запрос будет пустой.

Соединение со справочником тут не нужно.

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

    РезультатыЗапроса = Запрос.ВыполнитьПакет();
    ТабРаз = РезультатыЗапроса[0].Выгрузить();
    ТабДва = РезультатыЗапроса[1].Выгрузить();
```
---
посмотрите (24), пожалуйста
---
и вызов серверной функции при активизации строки с списке (тз)
Не надо текст запроса, лучше нормально код приведите, когда и откуда вызывается.
А также какое кол-во данных у вас в тз.
Ну и работаете, я так понимаю под толстым клиентом, ибо как иначе вы на клиенте умудряетесь получить тз?

Ибо понять вот это "ТаблицаИтоговПеремещения = ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет);" затруднительно - неясно в каком месте кода это вызывается. См. примечание.

P.S.
Хотел сперва напомнить, что "вызов серверной функции при активизации строки с списке (тз)."
Низзя так делать, но что-то тут вообще темное, ибо, что вы потом с тз делаете тоже, неясно.
---
Да, толстый клиент
Объясните, пожалуйста, как методологически правильно обновлять данные при активизации строки. Заранее спасибо!
---
Запрет на вызов серверных функций при активизации строки вызван тем, что он может привести к зацикливанию, т.к. может повторно вызваться событие при активизации строки.
Это может быть исправлено запоминанием текущей строки и отказом от повторного вызова серверного метода, если тек. строка не менялась. Ну и обычно добавляют обработчик ожидания, чтобы обычное метание/прокрутка по строкам не приводило к вызову серверного метода.

Методологически же я бы рекомендовал, если это возможно по соображениям расхода оперативной памяти и т.п., закешировать нужные данные и выводить их, не используя обращение к серверу.

Если закешировать не вариант, то рекомендовал бы пересмотреть архитектуру, т.к. каждый раз дергать сервер, да еще с запросами к базе, ну, вы сами понимаете...
Ведь по сути, вы при каждой активизации строки формируете "мини отчет", только вдобавок еще и не консистентный.
---
замер производительности не видно, потерялся где-то.
---
в (5)
---
На форме ДС (а не тз, как я писал)

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

    // Процедура активизации строки ДС
    &НаКлиенте
    Процедура ЖурналДокументовСписокПриАктивизацииСтроки(Элемент)

    ТекДанные = Элементы.Список.ТекущиеДанные;

    Если ТекДанные = Неопределено Тогда
    ТекБанковскийСчет = БанковскийСчет;
    Если ЗначениеЗаполнено(БанковскийСчет) И Дата = '00010101' Тогда
    ТекДата = ОбщегоНазначения.ПолучитьРабочуюДату();
    Иначе
    ТекДата = Дата;
    КонецЕсли;
    Иначе
    ТекДата = ТекДанные.Дата;
    ТекБанковскийСчет = ТекДанные.БанковскийСчет;
    КонецЕсли;

    ОбновитьИтоги(ТекДата, ТекБанковскийСчет);

    КонецПроцедуры

    &НаКлиенте
    Процедура ОбновитьИтоги(ТекДата, ТекБанковскийСчет, ВсегдаОбновлять = Ложь)

    Если ВсегдаОбновлять ИЛИ (ДатаИтогов <> ТекДата) ИЛИ (БанковскийСчетИтогов <> ТекБанковскийСчет) Тогда

    ТаблицаИтогов = ПолучитьИтогиНаСервере(ТекДата, ТекБанковскийСчет);

    БанковскийСчетИтогов = ТекБанковскийСчет;
    ДатаИтогов = ТекДата;

    НачальныйОстаток = ТаблицаИтогов.Итог("НачальныйОстаток");
    ВсегоПоступило = ТаблицаИтогов.Итог("ВсегоПоступило");
    ВсегоСписано = ТаблицаИтогов.Итог("ВсегоСписано");
    КонечныйОстаток = ТаблицаИтогов.Итог("КонечныйОстаток");

    ТаблицаИтоговПеремещения = ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет);
    ВсегоПоступилоПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоПоступило");
    ВсегоСписаноПеремещения = ТаблицаИтоговПеремещения.Итог("ВсегоСписано");

    КонецЕсли;

    КонецПроцедуры

    Функция ПолучитьИтогиПеремещенияНаСервере(ТекДата, ТекБанковскийСчет)

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | 0 КАК ВсегоСписано,
    | СписаниеСРасчетногоСчета.СуммаДокумента КАК ВсегоПоступило
    |ИЗ
    | Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО СписаниеСРасчетногоСчета.СчетКонтрагента = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов
    | И СписаниеСРасчетногоСчета.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийСписаниеДенежныхСредств.ПереводНаДругойСчет)
    | И СписаниеСРасчетногоСчета.Организация = &Организация
    | И СписаниеСРасчетногоСчета.Дата МЕЖДУ &НачалоДня И &КонецДня
    | И СписаниеСРасчетногоСчета.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | ПриходныйКассовыйОрдер.СуммаДокумента,
    | 0
    |ИЗ
    | Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО ПриходныйКассовыйОрдер.Контрагент = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов
    | И ПриходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПКО.ПолучениеНаличныхВБанке)
    | И ПриходныйКассовыйОрдер.Организация = &Организация
    | И ПриходныйКассовыйОрдер.Дата МЕЖДУ &НачалоДня И &КонецДня
    | И ПриходныйКассовыйОрдер.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | 0,
    | РасходныйКассовыйОрдер.СуммаДокумента
    |ИЗ
    | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    | ПО РасходныйКассовыйОрдер.СчетОрганизации = БанковскиеСчета.Ссылка
    |ГДЕ
    | БанковскиеСчета.Ссылка = &БанковскийСчетИтогов
    | И РасходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ВзносНаличнымиВБанк)
    | И РасходныйКассовыйОрдер.Организация = &Организация
    | И РасходныйКассовыйОрдер.Дата МЕЖДУ &НачалоДня И &КонецДня
    | И РасходныйКассовыйОрдер.Проведен = ИСТИНА";

    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекДата));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекДата));
    Запрос.УстановитьПараметр("БанковскийСчетИтогов", ТекБанковскийСчет);
    Запрос.УстановитьПараметр("Организация", ТекБанковскийСчет.Владелец);
    Запрос.УстановитьПараметр("ВалютаРеглУчета", мВалютаРегламентированногоУчета);

    ТаблицаИтогов = Запрос.Выполнить().Выгрузить();

    Возврат ТаблицаИтогов;

    КонецФункции
```

И прикрепляю замер оф и уф. Спасибо большое!
---
В запросе функции ПолучитьИтогиПеремещенияНаСервере какая то дичь.

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

Зачем соединение со справочником Банковские счета?
Если СписаниеСРасчетногоСчета.СчетКонтрагента и есть нужный банковский счет, по которому надо делать отбор, то по нему и надо делать отбор.

Второй запрос:

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

Соединение по ПриходныйКассовыйОрдер.Контрагент = БанковскиеСчета.Ссылка
Контрагент это банковский счет? Серьезно?
Если в документе есть реквизит - банковский счет, то по нему и надо отбирать.

Третий запрос - аналогично первому.

Следующее замечание - ОбновитьИтоги - все что внутри "Если" должно быть в серверной процедуре.
Таблицу с сервера на клиент передавать нельзя.
---
рек. Контрагент дока ПриходныйКассовыйОрдер тип: СправочникСсылка.Склады, СправочникСсылка.БанковскиеСчета, СправочникСсылка.Контрагенты, СправочникСсылка.ФизическиеЛица

вот так сделано...
---
Тогда не надо соединяться со справочником ни в одном запросе. Сразу делайте отбор по нужному реквизиту документа.
---
по поводу соединения со справочником - это делается в случае, когда нужны данные по всем эл. спр. даже если нет док
---
Дополню.
ТаблицаИтоговПеремещения и ТаблицаИтогов это что? Реквизиты формы?
Если да, удаляйте их. Они не нужны.
---
ТаблицаИтоговПеремещения и ТаблицаИтогов - не реквизиты
На счет запроса ничего не могу сказать, задача сделать уф на основе оф, просто перенес запрос. Спасибо! Действительно, какая-то хрень...
---
Случайно не добавил еще вызываемую функцию. Вот как раз на ней тупит уф.

```1c
    &НаСервере
    Функция ПолучитьИтогиНаСервере(ТекДата, ТекБанковскийСчет)

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

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

    Запрос.УстановитьПараметр("ДатаИтогов", ТекДата);
    Запрос.УстановитьПараметр("БанковскийСчетИтогов", ТекБанковскийСчет);
    Запрос.УстановитьПараметр("Организация", ТекБанковскийСчет.Владелец);
    Запрос.УстановитьПараметр("ВалютаРеглУчета", мВалютаРегламентированногоУчета);

    ТаблицаИтогов = Запрос.Выполнить().Выгрузить();

    Возврат ТаблицаИтогов;

    КонецФункции
```
---
Уберите "Выразить" из запроса.
Как из соединения, так и из виртуальной таблицы.
Оно тут не нужно.
---
не сильно помогло(
---
Постараюсь сделать 1 запрос вместо 2
---
посмотрите (19), пожалуйста
---
Учел все рекомендации, но все равно 11 секунд...

```1c
    &НаКлиенте
    Процедура ЖурналДокументовСписокПриАктивизацииСтроки(Элемент)

    ТекДанные = Элементы.Список.ТекущиеДанные;

    Если ТекДанные = Неопределено Тогда
    ТекБанковскийСчет = БанковскийСчет;
    Если ЗначениеЗаполнено(БанковскийСчет) И Дата = '00010101' Тогда
    ТекДата = ОбщегоНазначения.ПолучитьРабочуюДату();
    Иначе
    ТекДата = Дата;
    КонецЕсли;
    Иначе
    ТекДата = ТекДанные.Дата;
    ТекБанковскийСчет = ТекДанные.БанковскийСчет;
    КонецЕсли;

    ОбновитьИтоги(ТекДата, ТекБанковскийСчет);

    КонецПроцедуры

    &НаКлиенте
    Процедура ОбновитьИтоги(ТекДата, ТекБанковскийСчет, ВсегдаОбновлять = Ложь)
    Структура = ПолучитьИтогиНаСервереТЕСТ(ТекДата, ТекБанковскийСчет, ТекБанковскийСчет.Владелец);

    БанковскийСчетИтогов = ТекБанковскийСчет;
    ДатаИтогов = ТекДата;
    НачальныйОстаток = Структура.НачальныйОстаток;
    ВсегоПоступило = Структура.ВсегоПоступилоП;
    ВсегоСписано = Структура.ВсегоСписаноП;
    КонечныйОстаток = Структура.КонечныйОстаток;
    ВсегоПоступилоПеремещения = Структура.ВсегоПоступило;
    ВсегоСписаноПеремещения = Структура.ВсегоСписано;

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьИтогиНаСервереТЕСТ(ТекДата, ТекБанковскийСчет, Организация)

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

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

    РезультатыЗапроса = Запрос.ВыполнитьПакет();
    ТабРаз = РезультатыЗапроса[0].Выгрузить();
    ТабДва = РезультатыЗапроса[1].Выгрузить();

    Если ТабРаз.Количество() = 0 тогда
    Стр = ТабРаз.Добавить();
    Стр.ВсегоПоступилоП = 0;
    Стр.ВсегоСписаноП = 0;
    КонецЕсли;

    Если ТабДва.Количество() = 0 тогда
    Стр = ТабРаз.Добавить();
    Стр.НачальныйОстаток = 0;
    Стр.ВсегоПоступило = 0;
    Стр.ВсегоСписано = 0;
    Стр.КонечныйОстаток = 0;
    КонецЕсли;

    Возврат Новый Структура("НачальныйОстаток, ВсегоПоступилоП, ВсегоСписаноП, КонечныйОстаток, ВсегоПоступило, ВсегоСписано",
    ТабДва[0].НачальныйОстаток, ТабДва[0].ВсегоПоступило, ТабДва[0].ВсегоСписано, ТабДва[0].КонечныйОстаток,
    ТабРаз[0].ВсегоПоступилоП, ТабРаз[0].ВсегоСписаноП);
    КонецФункции
```
---
так у вас что сервер слабый? Код на клиенте выполняет ПК на клиенте, а код на сервере ПК сервера 1С.
---
Да, постоянно загрузка цп под 100%
---
У меня больше нет идей, что можно еще исправить в запросе.
Ну только если сгруппировать результат первого запроса.

Можно предложить сначала выяснить - при запросе данных из какого документа выполняется долго.
То есть первый, второй или третий запрос в объединении.
Закомментировать остальные, включить замер и выполнить запрос.

Можно еще попробовать установить флаг Индексировать на те реквизиты документа, по которым выполняется условие отбора. То есть на СчетКонтрагента, Контрагент, СчетОрганизации соответственно.
---
Спасибо большое за помощь, на самом деле вы мне очень помогли в плане понимания решений для оптимизации!