0
DrLekter
05.06.19
✎
10:14
|
Дано: ОФ, справочник номенклатуры ~ 3000 позиций, иерархия без ограничения вложенности. Форма выбора открывается быстро на верхнем уровне дерева, очень медленно - когда перевыбирается позиция (то есть открывается не с начала, а с позиционированием на конкретном элементе).
Для эксперимента загрузил БД в файловую копию, создал "пустую" форму выбора (ничего не рассчитывается, дополнительные данные не показаны - только код и наименование, дерево и форма списка), RLS отключил, позиционирую перед открытием формы вручную.
Код:
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора();
ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ЭлементыФормы.Номенклатура.ТекущиеДанные.Номенклатура;
ФормаВыбора.Открыть();
третья строка отрабатывает (по замеру производительности) почти 4 секунды.
такой вариант:
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора();
ФормаВыбора.НачальноеЗначениеВыбора = ЭлементыФормы.Номенклатура.ТекущиеДанные.Номенклатура;
ФормаВыбора.Открыть();
работает почти 10 (!) секунд.
Без позиционирования открывается мгновенно.
По-моему, это ненормально. Что можно сделать - какие-то хитрые индексы добавить, ограничить иерархию, ещё что-то?
|
|
3
DrLekter
05.06.19
✎
11:52
|
Я написал, что нет там никаких дополнительных действий, форма создана специально для теста.
Замер производительности в первом случае показывает на строку
ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ЭлементыФормы.Номенклатура.ТекущиеДанные.Номенклатура;
во втором на ФормаВыбора.Открыть();
Остальные строки меньше на порядки по времени, эти занимают 80-90% всего времени.
|
|