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