Почему следует осторожно использовать свойство 'Видимость' на управляемых формах

01 февраля 2014

Изменение интерфейса

Флаг "Видимость" у элементов формы позволяет достаточно гибко определять состав элементов интерфейса в зависимости от каких-либо условий. Но использование возможностей изменения видимости элементов может отрицательно сказаться на скорости работы отдельных частей конфигурации.

 Исходная управляемая форма Исходная управляемая форма

Об этом и пойдет речь далее. Пример будем реализовывать в рамках управляемого интерфейса.

Изменение видимости

Выше на скриншоте представлена управляемая форма, в которой содержится динамический список с запросом к справочнику "Номенклатура", кнопка командной панели команды формы "Предупредить", выводящая предупреждение пользователю, а также команда "Показать/скрыть команду "Предупредить"", изменяющая видимость кнопки "Предупредить". Вот так выглядит обработчик этой команды:

&НаКлиенте
Процедура СкрытьКомандуВидимость(Команда)
 
 Элементы.Предупредить.Видимость = 
               НЕ Элементы.Предупредить.Видимость;
 
КонецПроцедуры 

Соответственно, при нажатии на кнопку "Скрыть/показать команду "Предупредить"" будет изменяться видимость кнопки "Предупредить".

Кнопка "Предупредить" на формеНо самое важное, что происходит при изменении видимости элементов формы, так это контекстное обращение к серверу при каждом изменении видимости элементов.

Так, если мы изменим видимость кнопки "Предупредить", то платформа передает весь контекст формы (реквизиты, элементы формы и их свойства и т.д.) на сервер, затем изменяет видимость элементов, выполняет перерисовку формы и возвращает ее на клиента.Количество вызовов сервера

В зависимости от того, насколько "тяжелая" форма по объему передаваемых данных на сервер, а также от канала связи, изменение видимости элемента может привести к значительному замедлению работы программы. Попробуйте включить эмитацию задержек при вызове сервера и выполните изменение видимости элемента формы. А потом сравните с выполнением команды без изменения видимости элементов. Разница будет существенной.

Выводы

Таким образом, изменение видимости элементов во время интерактивной работы, является весьма опасной возможностью, способной снизить быстродействие программы в несколько раз из-за излишних обращений к серверу. В следующей статье мы поговорим об оптимальном способе изменения видимости элементов в управляемых формах.


comments powered by Disqus