Имя: Пароль:
1C
1C 7.7
v7: Можно ли оптимизировать функцию?
0 AntiBuh
 
21.05.13
09:23
навеяло http://www.forum.mista.ru/topic.php?upd&id=665565

имеется функция:
Функция ПолучитьЦенуПродажи(ПромТовар,ПромКатегория,НаДату) Экспорт
   ГлобальныйРегистрЦенПродажи.УстановитьФильтр(ПромТовар,ПромКатегория);
   ГлобальныйРегистрЦенПродажи.ОбратныйПорядок(1);
   ГлобальныйРегистрЦенПродажи.ВыбратьДвижения(,НаДату);
   ПромЦена=0;
   Если ГлобальныйРегистрЦенПродажи.ПолучитьДвижение()=1 Тогда
       ПромЦена=ГлобальныйРегистрЦенПродажи.Цена;
   КонецЕсли;    
   Возврат ПромЦена;
КонецФункции

структура регистра:
Оборотный
измерения - Товар, Категория
Реквизит    - Цена

функция используется в списке справочника

Операторы стали жаловаться на лаги при перемещении по справочнику
померял - вроде основные затраты при получении цены

можно ли как-нибудь оптимизировать? или данный способ максимально быстрый?
1 ДенисЧ
 
21.05.13
09:25
прямой запрос.
2 Ёпрст
 
21.05.13
09:25
штатно - разве что индекс на отбор движений поставить в регистре
3 Ковычки
 
21.05.13
09:29
добавить периодический реквизит в справочник и заполнять ?
4 Shaman100M
 
21.05.13
09:30
выполняй обращение к функции один раз, в предопределенной
ПриВыбореРодителя() , т.е. определять цены один раз запросом (или прямым запросом) или перебором регистров, рез-ты в ТЗ, а диалог обновлять другой функцией, с поиском в ТЗ
5 AntiBuh
 
21.05.13
09:32
(2) отбор стоит
а не совсем штатно?
(3) а точно с реквизитом быстрее будет?
6 Ковычки
 
21.05.13
09:33
Да, еще - добавьте любой ресурс в регистр.
7 AntiBuh
 
21.05.13
09:47
(6) наличие ресурса как-то влияет на скорость?
8 Shaman100M
 
21.05.13
09:53
(7) я бы не стал его добавлять  - много где придется переписывать модули.

вот, может пригодится:
http://infostart.ru/public/22312/
http://forum.infostart.ru/forum24/topic27139/
9 Shaman100M
 
21.05.13
09:55
(5) да, должно быть быстрее. ))
в модуле - ИспользоватьДату();
в диалоге - ссылка на реквизит с ценой.
10 Ковычки
 
21.05.13
09:57
(8) ресурс нужен фиктивный иначе могут быть вылеты
11 Ковычки
 
21.05.13
10:04
в ВыбратьДвижения еще бы наверное не помешало задать начальную дату, иначе в скуле запрос будет с 1753 года, как это будет отрабатывать - хз
12 Vlad_1717
 
21.05.13
10:07
(4) +100. Так и сделал в своё время.
13 AntiBuh
 
21.05.13
10:08
(8) скачать стартманей нету :(
(11) база файловая, и там вроде ж все равно обратный порядок
14 Shaman100M
 
21.05.13
10:17
(13) отправил
15 AntiBuh
 
21.05.13
10:17
(9) спасибо
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.