Имя: Пароль:
1C
1С v8
Как быстрее получать цены из регистра сведений
0 Double_Medved
 
16.04.13
12:13
УТ11, был тут написанный не мной и не типовой документ, в котором табличная часть номенклатуры и при открытии он перебирает все строки номенклатуры и для каждой строки ищет ее последнюю цену и выводит. Не суть зачем, суть в том что это медленно сделано. Грубо говоря цены для сотни сток он ищет минут 5. Я хочу это ускорить. Сейчас в цикле перебираются строки и для каждой для нахождения цены вызывается процедура:
&НаСервере
Функция ПолучитьТекущуюЦену(Номенклатура,ВидЦены);
   
   Старая = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(,Новый Структура("Номенклатура, ВидЦены",Номенклатура,ВидЦены)).Цена;
   Возврат (Старая);
   
КонецФункции

Подскажите как можно ускорить?
1 Wobland
 
16.04.13
12:13
взять и запросить
2 1Сергей
 
16.04.13
12:13
запаросом
3 Wobland
 
16.04.13
12:15
ТЧ левое РС...
4 vip67
 
16.04.13
12:17
перенести получение цены для всей ТЧ на сервер, чтобы быстрее.
но настораживает - что при открытии содержимое документа МЕНЯЕТСЯ.
т.е. сам документ по себе не содержит достоверной информации. Я бы понял - при создании или заполнении менять данные - но не при каждом открытии.
5 MSII
 
16.04.13
12:19
(4) А где написано, что документ меняется?
6 Double_Medved
 
16.04.13
12:21
(4) там все еще более непросто. Поля которые меняются при открытии - они как бы в нем и не хранятся и ни на что не влияют - это просто цены из регистра.
7 MSII
 
16.04.13
12:22
(3) А если в параметры таблицы СрезПоследних номенклатуру засунуть, не быстрее будет?
8 Double_Medved
 
16.04.13
12:24
(7) быстрее, но тут получается что потом цены в регистре могут измениться а поля нет и данные будут неверные.
9 Double_Medved
 
16.04.13
12:24
А блин выходит запрос по любому быстрее всех этих методов?
10 1Сергей
 
16.04.13
12:25
(8) юзай динамический список
11 MSII
 
16.04.13
12:27
(8) Ты меня не понял, ну да ладно, я у автора (3) спросил.
12 1Сергей
 
16.04.13
12:35
(11) что лучше, один запрос по всем номенклатурам или 100500 маленьких запросов по каждой номенклатуре?
13 Михаил Козлов
 
16.04.13
12:36
По-видимому, цены просто выводятся на экран.
1. Получить запросом по всех номеклатуре из ТЧ. Предусмотреть возможность получения цен при изменении ТЧ (добавление/изменение состава ТЧ).

2. Получать цены по мере необходимости (в ПриПолученииДанных табличного поля). Можно предусмотреть локалный кэш, чтобы не получать несколко раз по одной и той же номенклатуре. Может оказаться чуть быстрее, если строк в ТЧ много, а выводится 20.
14 H A D G E H O G s
 
16.04.13
12:39
** зевает.
15 MSII
 
16.04.13
12:39
(12) Один запрос. Его и обсуждаем. В (3) предложено соединять ТЧ с РС, в (7) отбирать из РС через параметры виртуальной таблицы. Что лучше?
16 H A D G E H O G s
 
16.04.13
12:42
У автора - УФ.
ДинамическийСписок такой динамический, что лучше без него.

ТЗ на форму, константу ДатаВремя в конфигурацию, ПриЗаписи РС. ЦеныНоменклатуры, ставить ДатуВремя последнего изменения, в форме - таймер, смотрит время константы с временем в форме, при несовпадении - обновляет ТЗ и время в форме.
Фсе.