Имя: Пароль:
1C
1С v8
Помогите усовершенствовать код вычисления остатков
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) Читай ИТС)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn