Добрый день.
Есть у нас такая функция:
Функция глСвободныйОстаток(Док,Склад,Номенклатура,Остаток=0,Резерв=0,НаКонецДня="") Экспорт
rs = СоздатьОбъект("ODBCRecordSet");
qr = "
|SELECT SUM(МестаХраненияОстатки.КоличествоОстаток) Остаток,
| SUM(ISNULL(РезервыОстатки.КоличествоОстаток, 0)) Резерв
|FROM $РегистрОстатки.МестаХранения(:ВыбДата ~,,
| (МестоХранения = :ВыбМХ)
| AND (МПЗ = :ВыбМПЗ~),
| (МестоХранения, МПЗ),) AS МестаХраненияОстатки
|LEFT JOIN $РегистрОстатки.Резервы(:ВыбДата ~,,
| (МестоХранения=:ВыбМХ)
| AND (Номенклатура=:ВыбМПЗ),
| (Номенклатура, МестоХранения),) AS РезервыОстатки ON МестаХраненияОстатки.МПЗ = $ВидСправочника36.Номенклатура + РезервыОстатки.Номенклатура AND МестаХраненияОстатки.МестоХранения = РезервыОстатки.МестоХранения";
Если НаКонецДня<>"" Тогда
rs.УстановитьТекстовыйПараметр("ВыбДата", НаКонецДня);
Иначе
rs.УстановитьТекстовыйПараметр("ВыбДата", СформироватьПозициюДокумента(Док, -1));
КонецЕсли;
rs.УстановитьТекстовыйПараметр("ВыбМПЗ", Номенклатура);
rs.УстановитьТекстовыйПараметр("ВыбМХ", Склад);
СтруктураОстатки=rs.ВыполнитьСкалярный(qr);
Остаток=СтруктураОстатки.Остаток;
Резерв=СтруктураОстатки.резерв;
Возврат Остаток-Резерв;
КонецФункции
По одному товару и одному складу запрос выполняется около 3 секунд. Можно ли оптимизировать этот запрос что бы он быстрее выполнялся?
Установка быстрой обработки движений в регистре резервов результата не дала.