|
Ускорение получение остатка в форме регистрации продаж | ☑ | ||
---|---|---|---|---|
0
ExRq
03.10.11
✎
13:32
|
Добрый день!
Подскажите пожалуйста, УТ 10.3. в форму регистрации продаж Чека ККМ, добавил колонку остаток, в процедуру при выводе строки добавил процедуру получающую остатки на розничном складе (сама процедура получения остатков в моем общем модуле). Но теперь время после нажатия на кнопку сканирования до появления товара с остатком в таблице доходит до 6 сек. (иногда быстрее), в зависимости от производительности компьютера. Как можно ускорить получение остатка, поделитесь опытом? Процедуру прикладываю: Функция ПолучитьОстаткиНаРозничномСкладе (Элемент) Экспорт Номенклатура = Элемент.Номенклатура.Ссылка; Характеристика = Элемент.ХарактеристикаНоменклатуры; Серия = Элемент.СерияНоменклатуры; Склад = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойСклад"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыВРозницеОстатки.КоличествоОстаток КАК Остаток |ИЗ | РегистрНакопления.ТоварыВРознице.Остатки КАК ТоварыВРозницеОстатки |ГДЕ | ТоварыВРозницеОстатки.Номенклатура = &Номенклатура | И ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры = &Характеристика | И ТоварыВРозницеОстатки.Склад = &Склад | И ТоварыВРозницеОстатки.СерияНоменклатуры = &Серия"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("Характеристика", Характеристика); Запрос.УстановитьПараметр("Серия", Серия); Запрос.УстановитьПараметр("Склад", Склад); Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() > 0 тогда Возврат Результат[0].Остаток; Иначе Возврат 0; КонецЕсли; КонецФункции |
|||
1
art_id
03.10.11
✎
13:35
|
используй параметры виртуальной таблицы
|
|||
2
zbv
03.10.11
✎
13:35
|
в запросе использовать параметры виртуальной таблицы
|
|||
3
Maxus43
03.10.11
✎
13:36
|
в при выводе строки тоже не кошерно, слишком часто будет повторятся... при получении данных есть возможность использовать?
|
|||
4
unregistered
03.10.11
✎
13:38
|
Если строк много, то целесообразнее использовать ПриПолученииДанных вместо ПриВыводеСтроки.
|
|||
5
ExRq
03.10.11
✎
13:40
|
При получении данных можно, но есть момент кассиры любят вбивать штрих код через инсерт (добаляется новая строчка без номенклатуры харктеристики) и ошибка сразу лезет..
Строк не много в чеке до 3 строк, не больше. |
|||
6
ExRq
03.10.11
✎
13:41
|
Про виртуальную таблицу сейчас попробую
|
|||
7
unregistered
03.10.11
✎
13:47
|
(5) >> и ошибка сразу лезет..
Ну это надо учитывать в любом случае. Проверять, что в строке есть данные, для которых запрашивается остаток. Можно еще сделать вывод данных об остатках опциональным. Типа по умолчанию ни какие остатки не выводятся, но если надо, то кассир жмет кнопку и видит колонку с остатками. Это подойдет, если остатки нужно знать не всегда. |
|||
8
ExRq
03.10.11
✎
13:49
|
Точно, Спасибо большое за совет.
|
|||
9
ExRq
03.10.11
✎
14:58
|
Виртуальные таблицы все исправили, задержки практически нет.
Всем спасибо. |
|||
10
Ткачев
03.10.11
✎
15:03
|
(9)Ну а код, код где исправленный ?
|
|||
11
ExRq
03.10.11
✎
16:39
|
Надеюсь правильно сделал?
Функция ПолучитьОстаткиНаРозничномСкладе (Элемент) Экспорт Номенклатура = Элемент.Номенклатура.Ссылка; Характеристика = Элемент.ХарактеристикаНоменклатуры; Серия = Элемент.СерияНоменклатуры; Склад = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойСклад"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыВРозницеОстатки.КоличествоОстаток КАК Остаток |ИЗ | РегистрНакопления.ТоварыВРознице.Остатки( | , | Номенклатура = &Номенклатура | И ХарактеристикаНоменклатуры = &Характеристика | И СерияНоменклатуры = &Серия | И Склад = &Склад) КАК ТоварыВРозницеОстатки"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("Характеристика", Характеристика); Запрос.УстановитьПараметр("Серия", Серия); Запрос.УстановитьПараметр("Склад", Склад); Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() > 0 тогда Возврат Результат[0].Остаток; Иначе Возврат 0; КонецЕсли; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |