Анализ кода показал, что причиной задержек при построении отчёта является запрос в цикле.
За построение отчета отвечает обработка «кпкКонтрольПередвиженийАгентовОнлайн».
Непосредственно построение отчета начинается с вызова «ДеревоТрековВыбор».
Стек выглядит следующим образом:
ПолучитьДатуДокументаМУ
ПолучитьДатуДокумента
СформироватьМаркерыДокумента
…
ДеревоТрековВыбор
В процедуре «СформироватьМаркерыДокументов» есть цикл по элементам таблицы документов. В цикле вызывается функция ПолучитьОписаниеДокумента, а из нее функция ПолучитьДатуДокументаМУ.
Ниже текст функции ПолучитьДатуДокументаМУ
Функция ПолучитьДатуДокументаМУ(ТекДок)
ДатыДокумента = Неопределено;
//получим из регистра дату и время создания документа
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| кпкСведенияДокумента.ДатаВремяСоздания,
| кпкСведенияДокумента.Период
|ИЗ
| РегистрСведений.кпкСведенияДокумента.СрезПоследних КАК кпкСведенияДокумента
|ГДЕ
| кпкСведенияДокумента.КПКДокумент = &ТекДокумент";
Запрос.УстановитьПараметр("ТекДокумент", ТекДок);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
ДатаВМУ = СокрЛП(Выборка.ДатаВремяСоздания);
ДатаЗагрузки = СокрЛП(Выборка.Период);
ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки);
КонецЕсли;
Возврат ДатыДокумента;
КонецФункции
Функция возвращает структуру ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки).
Есть два способа решения проблемы.
Первый. Годится для не слишком щепетильных, т.к. принимаем допущение, что
ДатаВМУ = ТекДок.Дата и
ДатаЗагрузки = ТекДок.Дата
Тогда функция ПолучитьДатуДокументаМУ примет вид
Функция ПолучитьДатуДокументаМУ(ТекДок)
ДатыДокумента = Неопределено;
ДатаВМУ = ТекДок.Дата;
ДатаЗагрузки = ТекДок.Дата;
ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки);
Возврат ДатыДокумента;
КонецФункции
В случаях, когда в отчете важно видеть точные даты необходимо использовать другой способ.
Способ Второй.
При втором способе функция ПолучитьДатуДокументаМУ примет вид
Функция ПолучитьДатуДокументаМУ2(ТекДок)
ДатыДокумента = Неопределено;
Выборка = ТабДокументы.Найти(ТекДок,"Документ");
Если Выборка = Неопределено Тогда
Возврат ДатыДокумента;
КонецЕсли;
ДатаВМУ = СокрЛП(Выборка.ДатаСозданияВМУ);
ДатаЗагрузки = СокрЛП(Выборка.Период);
ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки);
Возврат ДатыДокумента;
КонецФункции
Использовать функцию ПолучитьДатуДокументаМУ без изменения таблицы значений ТабДокументы нельзя.
Обработка со всеми внесенными изменениями в прикрепленном к статье файле. Изменения помечены маркером //Олег.