Имя: Пароль:
1C
1C 7.7
v7: Чем можно заменить расчет регистра остатков?
0 Zhuravlik
 
26.07.11
11:20
Здравствуйте. Есть документ, который очень долго проводиться, попросили оптимизировать. В обработке проведения сразу обратил внимание на строчки:

       if( ИтогиАктуальны()=0  )then
           Рег2.ВременныйРасчет(1);                
           РассчитатьРегистрыНа(ТекущийДокумент());
       endif;    

Решил замерить время:

       start = _GetPerformanceCounter();

       if( ИтогиАктуальны()=0  )then
           Рег2.ВременныйРасчет(1);                
           РассчитатьРегистрыНа(ТекущийДокумент());
       endif;    
       
       fin = _GetPerformanceCounter();
       
       time = Окр((fin - start)/1000);
       Сообщить("Время расчета регистров:" + Строка(time) + "Для документа " + Строка(ТекущийДокумент()));        
   
   start = _GetPerformanceCounter();

//Весь остальной код

       fin = _GetPerformanceCounter();
       
       time = Окр((fin - start)/1000);
       Сообщить("Время остальных операций:" + Строка(time) + "Для документа " + Строка(ТекущийДокумент()));    


И перепровел в тестовой базе все документы этого вида эа два дня, в итоге получилось что на расчет регистров тратиться 19-26 секунд, а на остальные операции 1-2 сек.

В дальнейшем он используется так:

рег2.СводныеОстатки(,МатериалГаз.ТекущийЭлемент(),);
Если рег2.Количество = 0 Тогда
   Сумма_=0;
Иначе
   Сумма_= рег2.Сумма/рег2.Количество;                          
КонецЕсли;

Я не очень опытен, не знаю как от этого расчета избавится, и возможно ли это вообще.
1 viktor_vv
 
26.07.11
11:25
Поставить фильтры на регистр.
2 Zhuravlik
 
26.07.11
12:04
(1) Спасибо) Намного быстрее, но возникла проблема, мне надо установить фильтр на несколько значений измерения, я могу их задать списокм значений?
3 Mikeware
 
26.07.11
12:05
(2) СП украли?
4 Мимохожий Однако
 
26.07.11
12:07
Выровняй Дату актуальности и границу последовательности.
5 Zhuravlik
 
26.07.11
12:07
(3) нет, просто надо быстрее, я и там и здесь... Вот нашел УстановитьЗначенияФильтра, вроде то?
6 Mikeware
 
26.07.11
12:09
(5) пардон, я не посмотрел, что ты 1986...
7 Zhuravlik
 
26.07.11
12:14
(6) Я говорил, что неопытен.

(1)Взял метод УстановитьЗначенияФильтра, создал список значений для него, все выполняется быстрее гораздо) Спасибо Вам за помощь
8 Mikeware
 
26.07.11
12:15
(7) 86 - это не "неопытность", и не "молодость". Это - увы - диагноз.