Непонятные торможения при открытии формы выбора структурных единиц. УНФ 3.0

У клиента при открытии формы структурных единиц — визуально заметное торможение, форма открывается только через 15-20 секунд.

Замеры производительности не показывают ничего криминального.

Подозрительно, что обработка получения представления вызывается 360 раз — примерно столько, сколько элементов справочнике структурных единиц.

Полностью эту обработку удалить нельзя, так не работает:

Работает только так, но это не отключает совсем вызов этой обработки:

Если сделать пустую обработку получения представления, торможение остается:

Решено сделать форму списка, куда выводятся элементы справочника «Структурные единицы»:

При этом все выводится хорошо, торможения не наблюдается.

Однако есть один нюанс — обработка получения представления вызывается только 17-20 раз, столько сколько элементов отображается на форме.

Причем представление кэшируется, а у клиента обработка представления вызывается для всего справочника и не кэшируется.

У меня уже была похожая проблема, когда я допустил ошибку в RSL, но там проблема не наблюдалась под полными правами и проявлялась только при первом открытии.

Видимо, где-то в форме сидит элемент, который отображает все элементы справочника подразделения. Если по очереди удалять элементы, наверное, можно найти, где именно.

Но на это не было времени.

Решено было создать новую форму списка Справочник.СтруктурныеЕдиницы.Форма.ипсе_ФормаСписка для выбора, которая будет работать вместо штатной:

&После("ОбработкаПолученияФормы")
Процедура ипсе_ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
	Если ВидФормы = "ФормаВыбора" Тогда
		ВыбраннаяФорма = "Справочник.СтруктурныеЕдиницы.Форма.ипсе_ФормаСписка";	
		СтандартнаяОбработка = ложь;
	КонецЕсли;
КонецПроцедуры

В самой форме нужно устанавливать режим выбора:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Параметры.Свойство("РежимВыбора") И Параметры.РежимВыбора = Истина Тогда
		Элементы.Список.РежимВыбора = истина;
	КонецЕсли; 
КонецПроцедуры

Хотя если форма используется только для выбора, можно у элемента управления, связанным со списком, установить галочку «Режим выбора».

Жаль, что нельзя понять, откуда вызывается получение представления… В итоге приходится решать проблему с ребусами…

Среда: Платформа 8.3.25.1336, УНФ 3.0.9.123. Объем: 1.7 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

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