Имя: Пароль:
1C
1С v8
Управляемые формы. Непонятные вызовы сервера.
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) про условное оформление думал, спасибо, но для этого много чего переделать придется...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.