Флаг "Видимость" у элементов формы позволяет достаточно гибко определять состав элементов интерфейса в зависимостио от каких-либо условий. Но использование возможностей изменения видимости элементов может отрицательно сказаться на скорости работы отдельных частей конфигурации.
Об этом и пойдет речь далее. Пример будем реализовывать в рамках управляемого интерфейса.
Выше на скриншоте представлена управляемая форма, в которой содержится динамический список с запросом к справочнику "Номенклатура", кнопка командной панели команды формы "Предупредить", выводящая предупреждение пользователю, а также команда "Показать/скрыть команду "Предупредить"", изменяющая видимость кнопки "Предупредить". Вот так выглядит обработчик этой команды:
&НаКлиенте Процедура СкрытьКомандуВидимость(Команда) Элементы.Предупредить.Видимость = НЕ Элементы.Предупредить.Видимость; КонецПроцедуры
Соответственно, при нажатии на кнопку "Скрыть/показать команду "Предупредить"" будет изменяться видимость кнопки "Предупредить".
Но самое важное, что происходит при изменении видимости элементов формы, так это контекстное обращение к серверку при каждом изменении видимости элементов. Так, если мы изменим видимость кнопки "Предупредить", то платформа передает весь контекст формы (реквизиты, элементы формы и их свойства и т.д.) на сервер, затем изменяет видимость элементов, выполняет перерисовку формы и возвращает ее на клиента.
В зависимости от того, насколько "тяжелая" форма по объему передаваемых данных на сервер, а также от канала связи, изменение видимости элемента может привести к значительному замедлению работы программы. Попробуйте включить эмитацию задержек при вызове сервера и выполните изменение видимости элемента формы. А потом сравните с выполнением команды без изменения видимости элементов. Разница будет существенной.
Таким образом, изменение видимости элементов во время интерактивной работы, является весьма опасной возможностью, способной снизить быстродействие программы в несколько раз из-за излишних обращений к серверу. В следующей статье мы поговорим об оптимальном способе изменения видимости элементов в управляемых формах.