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

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

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

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

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

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

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

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

СводОстатков =  Новый Соответствие();

6 Comments

  1. akomar

    Вы предполагаете изменять модуль формы или модуль объекта типовой?

    Reply
  2. Dimasik2007

    ПриВыводеСтроки не совсем удачная идея. Лучше данные сразу получать порциями в процедуре ПриПолученииДанных.

    Подробности курим тут: http://kb.mista.ru/article.php?id=310

    Reply
  3. Dimasik2007
    Reply
  4. Dimasik2007

    Таблицу использовал, потому что отрисовывал еще количество файлов, а так можно использовать все тоже соответствие.

    Reply
  5. khaoos

    (1) в типовых конфигурациях, я думаю, не встретишь тяжелых запросов при выводе каждой строки. А вот в «допиленных» — это сколько угодно :).

    Reply
  6. zergey128

    Автор,курите типовые, а не изобретайте велосипед.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *