Тормозит УАТ 1.0? Простое решение, как ускорить





Если тормозит УАТ 1.0, Вам сюда.

При работе с УАТ 1.0, особенно при большом объёме данных, можно столкнуться с тормозами при работе интерфейса и проведении некоторых расчётов.

Для примера возьмём форму списка справочника Транспортные средства и посмотрим на замеры производительности.

Как видим, 182 раза выполнялся запрос, что заняло 51% времени, и это только при открытии формы списка справочника Транспортные средства, тут явно что-то не то.

Запрос находится в функции уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя, запрос содержит соединение РегистрСведений.уатПраваИНастройки с ПланВидовХарактеристик.уатПраваИНастройки четыре раза.

Вопрос зачем городить такой запрос и зачем он выполняется 182 раза только при открытии формы списка справочника Транспортные средства, мы оставим разработчикам. Кстати вызов данной функции встречается 420 раз в конфигурации

Нам надо как-то решить вопрос с производительностью. Будем кешировать права и настройки, для этого будем использовать глобальную переменную глКЭШПраваИНастройкиУАТ в Модуль обычного и управляемого приложения.

В функцию уатПолучитьПраваИНастройкиПользователя ещё один параметр ИспользоватьКЭШ = Истина

И добавляем алгоритм кеширования, перед запросом.

Для корректной работы нужно так-же внести изменения в Модуль объекта обработки уатУстановкаПравИНастроек, а именно найти все вызовы уатПолучитьПраваИНастройкиПользователя и последним параметром поставить Ложь, чтобы не использовать кеширование при её работе.

После изменений при открытии формы списка справочника Транспортные средства данный запрос выполняется всего 3 раза, для заполнения кэша.
Все остальные вызовы получают данные из кэша и не дёргают базу запросами.

Замеры и скриншиты сделаны в файловой Демо базе, но ранее аналогичные изменения позволили значительно улучшить производительность в работе модуля УАТ 1.0 интегрированного в УПП с тысячей элементов в справочнике Транспортные средства. 

Тестировалось на конфигурациях:
— УАТ Проф, редакция 1.0 (1.0.14.1), платформа (8.3.12.1790)

Во вложении CF с изменениями для объединения с УАТ Проф, редакция 1.0 (1.0.14.1), если Вам лень набивать код с картинок 🙂

4 Comments

  1. KroVladS

    УАТ Проф редакция 1.0 не самая свежая конфа, но её до сих пор активно используют поэтому считаю что будет полезно.

    Reply ↓
  2. maddy

    Если кешировать пообъектно можно просто поставить «Повторное использование возвращаемых значений» «На время сеанса»

    Reply ↓
  3. KroVladS

    (2)

    Повторное использование возвращаемых значений» «На время сеанса»

    В УАТ 2 работа этой функции именно так и реализована, функция вынесена в отдельный модуль уатПраваИНастройкиПовтИсп

    На момент первоначальной реализации я увидел проблему и посчитал что сделать свой кэш проще.

    Reply ↓
  4. zabaluev

    Позор разработчикам, элементарную оптимизацию не сделали.

    Reply ↓

Leave a Comment

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