Имя: Пароль:
1C
 
УТ10.3 тормоз при подборе номенклатуры
,
0 Лунтик
 
06.10.15
10:51
Клиент желает работать с развернутым списком номенклатуры (15 тысяч строк в справочнике номенклатуры+характеристики+качество=50 тысяч строк).
При подборе в режиме цена/остатки жуткие тормоза (при группировке пропадают).
1. Есть смысл оптимизировать запросы (речь идет только о развернутом списке) или из-за сложных наложений ускорения не следует ждать?
2. Если уж оптимизировать то в 10 или в 11 (собственно 10 выбрали из-за того, что 11 в развернутом виде тормозит уже в режиме "справочник" )?
1 Мимохожий Однако
 
06.10.15
10:55
Подбор разный бывает. При тормозах надо брать тот вид отбора, который без дополнительных вычислений при выводе.
2 Cyberhawk
 
06.10.15
10:56
Дин. список тебе в помощь
3 Лунтик
 
06.10.15
10:58
(2) Разве в 11 не дин.список?
4 Cyberhawk
 
06.10.15
11:03
(3) он, и все нормально работает
5 John83
 
06.10.15
11:03
(1) для остатков не такой уж запрос получится
6 John83
 
06.10.15
11:04
(0) запускай замер производительности и смотри где затык, а так не должен тормозить, ибо там тоже дин. список
7 GrafFromTomsk
 
06.10.15
11:05
Кешировать нуна. Как-то так:
Процедура СправочникНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)
    //заполняем
    ТТ = Новый ТаблицаЗначений;
    ТТ.Колонки.Добавить("Товар");
    ТТ.Колонки.Добавить("Остаток");
    ТТ.Колонки.Добавить("Резерв");
    ТТ.Колонки.Добавить("Цена");
    Для каждого Строка Из ОформленияСтрок Цикл
        НоваяСтрока = ТТ.Добавить();
        НоваяСтрока.Товар = Строка.ДанныеСтроки.Ссылка;
    КонецЦикла;
    //вызываем
    глПолучитьКеш(ТТ,СтруктураИсходныхПараметров.Склад);
    //возвращаем
    й = 0;
    Для каждого Строка Из ОформленияСтрок Цикл
        Ост = ТТ[й].Остаток;
        Если Ост <> 0 Тогда
            Строка.Ячейки.Остаток.УстановитьТекст(Ост);    
        КонецЕсли;
        Ц = ТТ[й].Цена;
        Если Ц<>0 Тогда
            Строка.Ячейки.Цена.УстановитьТекст(Ц);    
        КонецЕсли;
        Р = ТТ[й].Резерв;
        Если Р<>0 Тогда
            Строка.Ячейки.Резерв.УстановитьТекст(Р);    
        КонецЕсли;        
        й = й + 1;
    КонецЦикла;