Имя: Пароль:
1C
1С v8
Тормоза при отображении большого дерева значений
0 cons74
 
28.04.18
15:02
Добрый день.

Есть обработка. В форме1 - список реквизитов номенклатуры, для каждого надо указать, "источник" откуда брать значение.
При открытии этой формы1 подготавливается большое дерево значений для выбора этих источников.
Установив курсор на элемент в таблице реквизитов нажимаем "выбрать источник" и открывается форма2, с перечнем источников. Дерево значений берется из ВременногоХранилища, куда оно было помещено в форме1.
Проблема в том, что для каждого реквизита номенклатуры приходится нажимать "выбрать источник", и каждый раз форма выбора рисуется заново, с тем огромным деревом значений, и тормозит оно по 11сек.

Первоначально в параметр формы2 из формы1 передавался объект ДанныеФормыДерево (дерево есть в форме1 как ревизит, без отображения). И была сначала
сериализация клиент (форма1)->сервер - создание формы2->сериализация сервер->клиент (форма2). Когда переделал на использование ВременногоХранилища - избавился от одной сериализации, но вторая - осталась.

Вижу варианты:
а) как-то кэшировать форму2, т.е. не закрывать её, а только скрывать от пользователя при выборе
б) передавать дерево с клиента на клиент, т.е. форма1 получает форму2 и на клиенте передает ей дерево (ДанныеФормы?), без явного обращения к серверу.
Но думаю что при варианте б) все равно будет обращение к серверу, и каждый раз новое открытие формы с новой отрисовкой дерева - т.е. ускорения не получить. Так что вопрос пожалуй: как сделать вариант а?
1 cons74
 
28.04.18
15:40
Слишком много букв?
2 H A D G E H O G s
 
28.04.18
16:08
(0) Никак.

Динамический список или табличный документ вам в помощь.
3 Сияющий в темноте
 
28.04.18
17:07
Самое простое решение,это перенести дерево на другую вкладку той же самой формы,тогда вместо открытия формы будет идти переключение на другую вкладку,и ничего передавать вообще будет не нужно,отказ от модальности,кстати,именно такое решение и предполагает
4 H A D G E H O G s
 
28.04.18
17:17
(3) Навигация по такому дереву будет напоминать кошмар
5 cons74
 
29.04.18
14:04
(2) дин список - в теории должен бы давать ускорение за счет  дин.считывания данных? А таб.документ зачем? Помещать в него дерево? И что это даст?
6 mistеr
 
29.04.18
15:00
(0) Предлагаю использовать вместо дерева значений табличный документ. Он по идее должен закешироваться и не перегоняться каждый раз при открытии формы2.

Формировать его на сервере, форма1 вообще не должна в этом участвовать.
7 H A D G E H O G s
 
29.04.18
15:49
(5) табдок, сформированный насерверебезконтекста больше не будет лазать на сервер при каждом чихе
8 H A D G E H O G s
 
29.04.18
15:50
(5) а он и не в теории даёт ускорение. Вообще незаменим в доках с ТЧ больше 10к строк