Каталог решений - Ускорение работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое

Ускорение работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое

Ускорение работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое

В наличии

Для ускорения работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое, нужно уменьшить количество выполнений запроса.

Для того чтоб запрос не выполнялся каждый раз при переходах по списку можно использовать Соответствие, которое будет выполнять роль временного хранилища результатов запросов.

Категория:

Описание

Для ускорения работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое, нужно уменьшить количество выполнений запроса.

Для того чтоб запрос не выполнялся каждый раз при переходах по списку можно использовать Соответствие, в котором будет храниться результат запроса. Если запрос по текущему документу уже выполнялся, его результат будет найден в соответствии.

Один недостаток, что данные в соответствии могут устареть за то время что открыт журнал. Но их можно обновить переоткрыв журнал.

Ниже пример кода в модуле формы списка:

Перем СводОстатков;
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)  
    НайденныйОстаток = СводОстатков.Получить(ДанныеСтроки.Ссылка);
    Если НайденныйОстаток = Неопределено Тогда      
        Запрос = Новый Запрос;   
        Запрос.Текст="ВЫБРАТЬ                
        | ЗаказыПоставщикамОстатки.КоличествоОстаток                
        |ИЗ                
        | РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки                
        |ГДЕ                
        | ЗаказыПоставщикамОстатки.ЗаказПоставщику = &ссылка" ;   
        Запрос.УстановитьПараметр("Ссылка", ДанныеСтроки.Ссылка);   
        Рез = Запрос.Выполнить();   
        Если Рез.Пустой() Тогда    
            ОформлениеСтроки.ЦветФона = WebЦвета.Белый;     
            СводОстатков.Вставить(ДанныеСтроки.Ссылка,0);  
        Иначе    
            ОформлениеСтроки.ЦветФона = WebЦвета.СветлоКоралловый;   
            СводОстатков.Вставить(ДанныеСтроки.Ссылка,1);  
        КонецЕсли;   
    Иначе   
        Если НайденныйОстаток = 0 Тогда    
            ОформлениеСтроки.ЦветФона = WebЦвета.Белый;    
        Иначе    
            ОформлениеСтроки.ЦветФона = WebЦвета.СветлоКоралловый;   
        КонецЕсли;   
    КонецЕсли;   
КонецПроцедуры

СводОстатков =  Новый Соответствие();
has been added to your cart:
Оформление заказа