При работе с УАТ 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), если Вам лень набивать код с картинок :)