|
Подскажите как оптимизировать код | ☑ | ||
---|---|---|---|---|
0
Samie_ch
09.12.11
✎
07:31
|
Функция ОстаткиНаСкладе(Номенклатура)Экспорт
//ВидСклада = Склад.ВидСклада; //Если ВидСклада = Перечисления.ВидыСкладов.Оптовый Тогда Текст = "ВЫБРАТЬ |ТоварыОрганизацийОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, ) КАК ТоварыОрганизацийОстатки |ГДЕ | ТоварыОрганизацийОстатки.Склад = &Склад | И ТоварыОрганизацийОстатки.Номенклатура = &Номенклатура"; // Иначе Если ВидСклада = Перечисления.ВидыСкладов.Розничный Тогда //Текст = "ВЫБРАТЬ //|ТоварыВРозницеОстатки.КоличествоОстаток КАК Количество //|ИЗ //| РегистрНакопления.ТоварыВРознице.Остатки(&Дата, ) КАК ТоварыВРозницеОстатки //|ГДЕ //| ТоварыВРозницеОстатки.Склад = &Склад //| И ТоварыВРозницеОстатки.Номенклатура = &Номенклатура"; //КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = Текст; Запрос.УстановитьПараметр("Дата",Дата); Запрос.УстановитьПараметр("Склад",Склад); Запрос.УстановитьПараметр("Номенклатура",Номенклатура); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Количество = ?(Выборка.Следующий(),Выборка.Количество,0); Возврат Количество; КонецФункции |
|||
1
Wobland
09.12.11
✎
07:32
|
параметры запроса - в параметры вирт. таблицы, ВЫБРАТЬ КОЛИЧЕСТВО()
|
|||
2
Нуф-Нуф
09.12.11
✎
07:32
|
используй параметры виртуальной таблицы
|
|||
3
ДенисЧ
09.12.11
✎
07:32
|
Внести отборы в параметры виртуальной таблицы
|
|||
4
Samie_ch
09.12.11
✎
07:33
|
Функция отвечает за показ текущего остатка товара по складу в документе "реализация товаров и услуг". После ее добавления при наборе позиций номенклатуры база стала очень сильно виснуть продолжительность зависаний от 10 сек до 10 минут.
|
|||
5
Samie_ch
09.12.11
✎
07:34
|
Грешу на то, что номенклатурных позиций насчитывается порядка 10 тысяч.
|
|||
6
Нуф-Нуф
09.12.11
✎
07:35
|
(5) тебя спасут (1)(2)(3)
|
|||
7
Wobland
09.12.11
✎
07:35
|
(1) ВЫБРАТЬ КОЛИЧЕСТВО() вычеркните, не так понял вопрос
|
|||
8
ЧеловекДуши
09.12.11
✎
08:05
|
О_о... автору нужно подсчитать количество элементов :D
И он нечего умного не придумал, как тупо выгрузить все в ТЗ и получить количество.... ...ДНК... все же седня пятнично :) |
|||
9
Wobland
09.12.11
✎
08:16
|
(8) остатки конкретной номенклатуры на складе ему надо
|
|||
10
Wobland
09.12.11
✎
08:19
|
кстати, да
Выборка.Следующий() Возврат Выборка.Количество; |
|||
11
Samie_ch
09.12.11
✎
08:19
|
(8)а как по другому можно сделать. Я новичек толком в коде пока не разбираюсь буду признателен если поможете решить проблему.
|
|||
12
Wobland
09.12.11
✎
08:21
|
и дату со складом в параметры функции засунь
|
|||
13
unregistered
09.12.11
✎
08:24
|
Не удивлюсь, если эта функция еще и в цикле перебора по строкам табличной части вызывается...
|
|||
14
unregistered
09.12.11
✎
08:29
|
Функция ОстаткиНаСкладе(Номенклатура)Экспорт
Текст = "ВЫБРАТЬ |ТоварыОрганизацийОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, Склад = &Склад И Номенклатура = &Номенклатура) КАК ТоварыОрганизацийОстатки"; Запрос = Новый Запрос; Запрос.Текст = Текст; Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Возврат ?(Выборка.Следующий(), Выборка.Количество, 0); КонецФункции |
|||
15
Samie_ch
09.12.11
✎
10:35
|
Ребят спасибо большое вроде помогло. Как окончательно протестирую отпишусь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |