УФ НачальноеОтображениеДерева - сколько элементов, столько и обр. к серверу? #629637


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

В этой группе 1С