новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Оптимальное изменение видимости элементов на управляемой форме

  • Добавить свою публикацию
  • для этого требуется регистрация

Флаг "Видимость"

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

Изображение

Сегодня мы рассмотрим альтернативный способ изменения видимости элементов управляемой формы, который не инициирует обращение к серверу. Тем самым мы сможем сэкономить трафик и увличить быстродействие программы.

Все на клиенте

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

Есть два варианта. Первый - использовать свойство элемента формы "Доступность". Но тогда, хоть польлзователь и не сможет работать с элементов формы для котрого доступность установлена в ЛОЖЬ, видеть он его все же будет. Вот так выглядит обработчик изменения доступности элемента формы:

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

 Недоступны элемент принимает следующий вид:

Изображение

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

Но что, если нам нужно полностью скрыть элемент формы из вида? Продемонстрируем как это сделать на элементе динамического списка представленой выше формы. Добавим на форму группу элементов с видом "Страницы" и две подчиненных группы с видом "Страница". Элемент динамического списка перенесем в одну из них.

Изображение

На пустую страницу, где нет динамического списка, добавим декорацию вида "Надпись", чтобы страница была не пустой и на нее можно было переключаться. У группы страниц свойство "Отображение страниц" установим в ЛОЖЬ, чтобы закладки были не видны.

Теперь в команде "Скрыть динамический список" напишем следующий обработчик:

&НаКлиенте
Процедура СкрытьКомандуВидимость(Команда)
	
	Если Элементы.Страницы.ТекущаяСтраница = Элементы.Страница1 Тогда
		Элементы.Страницы.ТекущаяСтраница = Элементы.Страница2;	
	Иначе
		Элементы.Страницы.ТекущаяСтраница = Элементы.Страница1;
	КонецЕсли;
	
КонецПроцедуры

 Команда переключает страницы. При переключении страниц обращений к серверу не происходит, все выполняется на стороне клиента. При этом если мы переключимся на страницу "Страница2", где был добавлена лишь декорация надписи, то форма будет выглядеть как на скриншоте ниже:

Изображение

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

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

Используйте возможности управляемых форм правильно!

 
0
Читайте также
Пример перевода конфигурации на управляемый интерфейс
Когда количество изменений на предприятии превышает критический уровень в сторону необновляемых конфигураций - 1С предлагает создание управляемого приложения
Выпуск №4.Настройки отбора и управление формой списка в 1С 8.х
Новые возможности 1С 8 по сравнению с 1С 7.7
Управляемый интерфейс. Подсистемы 1с.
Статья про управляемый интерфейс
Разработки
Еще от автора
≡ к списку статей