|
УФ НачальноеОтображениеДерева - сколько элементов, столько и обр. к серверу? | ☑ | ||
---|---|---|---|---|
0
Rounder
14.09.12
✎
16:03
|
УФ
Есть ДинамическийСписок. Режим отображения - дерево. Прописываю НачальноеОтображениеДерева.РаскрыватьВсеУровни. В итоге получаю сколько элементов в списке, столько и обращений к серверу. Так и должно быть? Если да - то почему? |
|||
1
vmv
14.09.12
✎
16:13
|
Сервер обходит все уровни классической рекурсией - так ему дали тупую команду: "Раскрыть все уровни"
чему ты удивляешься, дложно быть по другому? |
|||
2
Rounder
14.09.12
✎
16:19
|
Ну когда я на клиенте понятно. Но если я на сервере в ПриСоздании - разве это не должно быть в одном вызове?
|
|||
3
kible
14.09.12
✎
16:28
|
(2) Добавь команду на форму. В процедуре на клиенте вызови процедуру на сервере и напиши НачальноеОтображениеДерева.РаскрыватьВсеУровни. Посмотри сколько вызовов сервера будет.
|
|||
4
Rounder
14.09.12
✎
16:39
|
(3) Я так полагаю НачальноеОтображениеДерева.РаскрыватьВсеУровни оно потому и начальное отображение - что раскрывает уровни до того как отобразит список?
|
|||
5
Defender aka LINN
14.09.12
✎
16:46
|
(4) Нет
|
|||
6
Rounder
14.09.12
✎
16:52
|
Тогда что я делаю не так?
&НаКлиенте Процедура КомандаРаскрытьВсеУровни(Команда) РаскрытьУровниНаСервере(); КонецПроцедуры &НаСервере Процедура РаскрытьУровниНаСервере() Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; КонецПроцедуры Вызов сервера конечно же один. Но список остается неизменным. С открытым верхним уровнем как и был. |
|||
7
acsent
14.09.12
✎
16:55
|
начальное отображение не раскрывает никаких уровней
|
|||
8
vmv
14.09.12
✎
16:55
|
(6) это свойство актуально при создании формы, чувак
|
|||
9
Rounder
14.09.12
✎
16:57
|
(7) (8) Именно об это я и написал в (4).
Однако мне в (5) возразили. |
|||
10
Rounder
14.09.12
✎
16:59
|
Т.е. получается где бы я не устанавливал это свойство - я при открытии списка получаю N вызовов сервера, где N стремится к количеству элементов списка.
|
|||
11
ChAlex
14.09.12
✎
17:03
|
(9) - ну так мало ли кто чего может считать.
(10) - не знаю сколько обращений к серверу делается, но вообще-то чего им баловаться? Кроме как ПриСозданииНаСервере оно пофиг (ну при открытии можно как-то управлять) - потом - вилы, оно не приводит ни к чему. А если ты считаешь количество обращений к серверу в этом событии - то у меня вопрос: а как ты это делаешь? Ведь событие само обрабатывается на сервере. В каком это месте вы просчитали эти самые вызовы? |
|||
12
Rounder
14.09.12
✎
17:05
|
(11) Все очень просто. Есть окошко, показывающее в режиме отладки Общее и текущее кол-во вызовов к серверу.
Даже при Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; в ПриСозданииНаСервере я получаю порядка 70 лишних вызовов к серверов. |
|||
13
ChAlex
14.09.12
✎
17:09
|
(12) - ну чего, вызов сервера из сервера - чем мешает?
|
|||
14
Rounder
14.09.12
✎
17:11
|
(13) Тем что в этом случае список открывается 3-4 секунды. А это нуегона...
|
|||
15
ChAlex
14.09.12
✎
17:16
|
(12) - у меня ощущение, что вы путаете причину и следствие. Если вы смотрите на окошко Показатели производительности - то оно не зависит от того отладка это или нет и прочее, и тем более оно не считает количество вызовов в каких-то процедурах. Развернутое дерево - жрет много ресурсов. А разворачивается оно по мере подчитывания данных. Если попробуете раскрыть дерево справочника в котором порядка 5000 строк - то это времяя затянется ну так секунд на 10-15, а то и больше. Ждите - может когда и дойдут руки у разработчиков до оптимизации дерева значений, но надежд пока мало
|
|||
16
Rounder
14.09.12
✎
17:20
|
(15) Но главное - что показать юзеру развернутое дерево - "дорогое" удовольствие. А жаль.
|
|||
17
Rounder
14.09.12
✎
17:24
|
Кстати - вполне можно попробовать оптимизировать и самому. Если руки дойдут. На эту мысль натолкнуло то, что очень шустро открывается любая выбранная строка нижнего уровня. Т.е. я при открытии формы выбора подразделений организации устанавливал ТекущуюСтроку на основное подразделение организации пользователя. И дерево открывалось (с одной полностью открытой веткой) без всяческих видимых задержек в сравнении с полностью закрытым деревом.
|
|||
18
ChAlex
14.09.12
✎
17:26
|
(16) - да это так. Недоделка 1С - да это тоже так. Можно ли было бы этого избежать - возможно да , а возможно идеология реализации модели платформы не позволяет - тут не скажу. Чисто с точки зрения логики - наверное можно было бы лучше это делать. Ведь просто список подчитывается динамически, а дерево - нет (читает и ищет все ветки).
(17) - ничего не получится. Открывается быстро в режиме не разворачивать или разворачивать только верхний уровень. Остальное вилы - пробовал уже (хотелось как в обычном интерфейсе отображать справочники с деревом) - в результате сделал кнопки на выбор и вида и предложение пользователю выбрать самому - или красоту или быстроку. :) |
|||
19
ChAlex
14.09.12
✎
17:34
|
Иерархический справочник с 5000 строк открывается уже 3 минуты - еще не открылся. :) Так что лучше для больших списков это не делать.
|
|||
20
Rounder
17.09.12
✎
12:59
|
Может у кого есть объемный иерархический справочник, который вы не выводите в виде полностью раскрытого дерева в виду тормознутости раскрытия всех уровней?
Попытался оптимизировать раскрытие уровней - но на малых справочниках выигрыш не велик. А больших нет и создавать не хочется. (предполагается выигрыш раза в два в зависимости от специфики справочника) Готов кто-нибудь потестить? |
|||
21
ChAlex
17.09.12
✎
18:11
|
(20) - ну есть у меня большой. А в чем собственно оптимизация то?
|
|||
22
vmv
17.09.12
✎
20:39
|
да предложение теста в корне глупо с точки зрения только объема таблицы базы данных, можно подумать, что коээфицент производительности зависит только от жира таблицы - как дети прям
|
|||
23
ChAlex
18.09.12
✎
10:09
|
(22) - в данном случае - напрямую. Кроме всего из маленьких складывается большое. Так что недооценивайте мелочи
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |