|
Помогите усовершенствовать код вычисления остатков |
☑ |
0
GirlProgram
02.02.14
✎
14:34
|
Вот такой код. Необходимо вычислить остатки по абонентской плате:
Остатки = РегистрыНакопления.РасчетыПоАбонПлатеСКТВ;
Отбор = Новый Структура;
Отбор.Вставить("Контрагент",Контрагент);
Отбор.Вставить("ВидыУслуг",ВидыУслуг);
ТабОстатков = Остатки.Остатки(ДатаОстатков,Отбор,"Контрагент, ВидыУслуг");
Если ТабОстатков.Количество() > 0 Тогда
Остаток = ТабОстатков[0].Сальдо;
КонецЕсли;
Возврат Остаток;
Проблема в строчке обращения к регистру "ТабОстатков = Остатки.Остатки(ДатаОстатков,Отбор,"Контрагент, ВидыУслуг");" Данный запрос выполняется очень долго. Как его ускорить?
|
|
1
Wobland
02.02.14
✎
14:38
|
предлагаю использовать за...
|
|
2
mistеr
02.02.14
✎
14:46
|
..прос.
|
|
3
Armando
02.02.14
✎
14:47
|
Измерения контрагент виды услуг поставить на первое место в измерениях регистра. Может поможет
|
|
4
GirlProgram
02.02.14
✎
14:50
|
Сделала запрос
Запрос = Новый Запрос("ВЫБРАТЬ
| РасчетыПоАбонПлатеСКТВОстатки.Контрагент,
| РасчетыПоАбонПлатеСКТВОстатки.СальдоОстаток
|ИЗ
| РегистрНакопления.РасчетыПоАбонПлатеСКТВ.Остатки КАК РасчетыПоАбонПлатеСКТВОстатки
|ГДЕ
| РасчетыПоАбонПлатеСКТВОстатки.Контрагент = &Контрагент
| И РасчетыПоАбонПлатеСКТВОстатки.ВидыУслуг = &ВидыУслуг");
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ВидыУслуг", ВидыУслуг);
Результат = Запрос.Выполнить().Выгрузить();
если Результат.Количество() > 0 тогда
Остаток = Результат[0].СальдоОстаток;
конецесли;
Возврат Остаток;
также долго
|
|
5
Научите меня
02.02.14
✎
14:51
|
(4) Поставь отбор по контрагенту и Виду услуг в параметры виртуальной таблицы
|
|
6
GirlProgram
02.02.14
✎
14:51
|
сейчас попробую измерения переставить
|
|
7
GirlProgram
02.02.14
✎
14:51
|
(5) это как?
|
|
8
GirlProgram
02.02.14
✎
14:54
|
с измерениями помогло, скорость увеличилась
|
|
9
Научите меня
02.02.14
✎
14:55
|
(7) В конструкторе запросов - на закладке "Таблицы и поля" - самая последняя кнопка в графе посередине :)
|
|
10
GirlProgram
02.02.14
✎
14:56
|
(3)спасибо, просто летать стало. даже и представить не могла, что от порядка измерений зависит скорость
|
|
11
GirlProgram
02.02.14
✎
14:56
|
так что с виртуальными таблицами разбираться и не буду
|
|
12
Научите меня
02.02.14
✎
14:57
|
(4) А как у тебя отработает если остатка нет? Добавь перед условием строчку: Остаток = 0;
|
|
13
Научите меня
02.02.14
✎
14:58
|
(11) А зря, у тебя со временем будет все медленнее и медленнее работать такой запрос
|
|
14
Armando
02.02.14
✎
15:04
|
(10) Читай ИТС)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший