pvase писал(а) 26. Ноября 2009 :: 14:06:Приведите пожалуйста код, который вызывается ПрАктивизацииСтроки()
Львинную долю времени занимает процедура:
Процедура ПолучитьОстатки()
ТОстатки.УдалитьСтроки();
рс = СоздатьОбъект("ODBCRecordset");
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
ТекстЗапроса = "-- qryMaker:Отчет1.2009.11.12.11.40.20
|SELECT ОстаткиТМЦОстатки.Склад [Склад $Справочник.Склады]
| , Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Количество
| , Sum($СлужебныйОбщий.НормаПодтоварки*$Ном.МинОстаток) Норма
|FROM $РегистрОстатки.ОстаткиТМЦ(,
| RIGHT OUTER JOIN $Справочник.Склады AS Склады ON Склад = Склады.ID
| LEFT OUTER JOIN $Справочник.СлужебныйОбщий AS СлужебныйОбщий ON $СлужебныйОбщий.Склад = Склады.ID AND Склад = $СлужебныйОбщий.Склад
| INNER JOIN $Справочник.Номенклатура AS Ном ON Ном.ID = СлужебныйОбщий.PARENTEXT AND Ном.ID = Номенклатура,
| (Номенклатура = :ВыбНом),
| (Склад, Номенклатура),) AS ОстаткиТМЦОстатки
| RIGHT OUTER JOIN $Справочник.Склады AS Склады ON ОстаткиТМЦОстатки.Склад = Склады.ID
| LEFT OUTER JOIN $Справочник.СлужебныйОбщий AS СлужебныйОбщий ON $СлужебныйОбщий.Склад = Склады.ID AND ОстаткиТМЦОстатки.Склад = $СлужебныйОбщий.Склад
| INNER JOIN $Справочник.Номенклатура AS Ном ON Ном.ID = СлужебныйОбщий.PARENTEXT AND Ном.ID = ОстаткиТМЦОстатки.Номенклатура
|GROUP BY ОстаткиТМЦОстатки.Склад
|ORDER BY ОстаткиТМЦОстатки.Склад
|";
рс.УстановитьТекстовыйПараметр("ВыбНом", ТекНоменклатура);
то = рс.ВыполнитьИнструкцию(ТекстЗапроса);
Для н=1 По СписокСкладов.РазмерСписка() Цикл
стр = "";
Если ТО.НайтиЗначение(СписокСкладов.ПолучитьЗначение(н),стр,"Склад") = 0 Тогда
ТО.НоваяСтрока();
ТО.Склад = СписокСкладов.ПолучитьЗначение(н);
КонецЕсли;
КонецЦикла;
то.Сортировать("Склад");
рс = СоздатьОбъект("ODBCRecordset");
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
ТекстЗапроса = "-- qryMaker:Отчет1.2009.11.18.15.06.03
|SELECT ОстаткиТМЦОстатки.Склад [Склад $Справочник.Склады]
| , Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Количество
|FROM $РегистрОстатки.ОстаткиТМЦ(,,
| (Склад IN (Select Val From #СписокМП) And (Номенклатура = :ВыбНом)),
| Склад,) AS ОстаткиТМЦОстатки
|GROUP BY ОстаткиТМЦОстатки.Склад
|";
рс.УложитьСписокОбъектов(СписокСкладовМП,"#СписокМП");
рс.УстановитьТекстовыйПараметр("ВыбНом", ТекНоменклатура);
тмп = рс.ВыполнитьИнструкцию(ТекстЗапроса);
СуммаКоличество = то.Итог("Количество")+тмп.Итог("Количество");
СуммаНорм = то.Итог("Норма");
то.НоваяКолонка("Цена");
ТЦ = ПолучитьЦены();
ТОстатки.Загрузить(то);
ТОстатки.УстановитьПараметрыКолонки("Количество","Строка",15);
ТОстатки.ВыбратьСтроки();
Пока ТОстатки.ПолучитьСтроку()=1 Цикл
Попытка
Склад = СписокСкладовМП.Получить("МП"+Прав(СокрЛП(ТОстатки.Склад),2));
Исключение
Склад = "";
КонецПопытки;
стр = "";
Если тмп.НайтиЗначение(Склад,стр,"Склад") = 1 Тогда
личество)+"("+тмп.ПолучитьЗначение(стр,"Количество")+")");
КонецЕсли;
Попытка
стр = "";
Если ТЦ.НайтиЗначение(ТОстатки.Склад.ТипЦены,стр,"ТипЦен") = 1 Тогда
"Цена"));
КонецЕсли;
Исключение
КонецПопытки;
Если СокрЛП(ТОстатки.Количество) = "0" Тогда
ТОстатки.Количество = "";
КонецЕсли;
КонецЦикла;
ТПОстатки.ОбновитьСтроки();
КонецПроцедуры // ПолучитьОстатки
Но без неё никак нельзя.