|
Управляемые формы. Непонятные вызовы сервера. | ☑ | ||
|---|---|---|---|---|
|
0
guitar_player
09.01.13
✎
11:48
|
Коллеги! С новым рабочим годом!
Может кто-нибудь сможет мне прояснить некоторые моменты работы упр. форм. На управляемой форме расположено 2 дерева, есть реквизит - вспомогательная таблица, в которой хранится связь элементов этих деревьев. При активизации строки в первом дереве, второе дерево раскрашивается в событии при активизации строки. У меня есть некоторое недопонимание, почему возникают лишние серверные вызовы и их длительность при попытке обойти таблицу связей. Сам алгоритм раскрашивания, каких либо вызов и задержек не создает. // покажу только кусок кода, на котором происходят лишнии вызовы // 1 вариант - весь код выполняется на клиенте - самый быстрый вариант раскрашивания дерева (0.1). После открытия формы (активизация первой строки) в счетчике показывается порядка 40 вызовов сервера, при активизации остальных строк дополнительные вызовы сервера не делаются. Для Каждого ЭлементКоллекции Из ТаблицаСвязи Цикл Если ЭлементКоллекции.Источник = Источник Тогда Соответствие.Вставить(ЭлементКоллекции.Приемник, Истина); КонецЕсли; КонецЦикла; // 2 вариант - весь код выполняется на клиенте - при активизации каждой строки в счетчике накапливается по 18 серверных вызовов. По времени получение связи и раскрашивание занимает 0.25 сек. Для Каждого ЭлементКоллекции Из ТаблицаСвязи.НайтиСтроки(Новый Структура("Источник", Источник)) Цикл Соответствие.Вставить(ЭлементКоллекции.Приемник, Истина); КонецЦикла; // 3 вариант - выполняю все на сервере, отображается 1 вызов сервера, по времени занимает 0.89 сек (в замере 99% времени тратится на сам вызов) Поясните пожалуйста, почему такое может происходить? |
|||
|
1
MadHead
09.01.13
✎
11:58
|
Данные на тонком клиенте хранятся порциями(если говорить упрощенно то видимая область и еще немного) Когда ты оббегаешь циклом таблицу связей то клиенту приходится получать очередную порцию данных.
|
|||
|
2
MadHead
09.01.13
✎
12:07
|
Попробуй сделать через условное оформление
|
|||
|
3
guitar_player
09.01.13
✎
12:20
|
(1) Спасибо, про это я знал, но только сейчас понял почему в первом варианте делается много вызовов в самом начале, а затем не делается. А во втором варианте вызовы делаются каждый раз.
Но я до сих пор не могу понять почему контекстный вызов сервера (как в 3-ем варианте) отнимает столько времени и как его можно было бы облегчить... (2) про условное оформление думал, спасибо, но для этого много чего переделать придется... |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |