Разберем типичную проблему, с которой сталкиваются разработчики при проектировании обычных (неуправляемых) форм в 1С:Предприятии. После размещения реквизита на форме и снятия флага Доступность в палитре свойств элемент перестает реагировать на стандартный щелчок мыши в визуальном редакторе. Клики проходят сквозь поле, выделяя саму форму или подложку, из-за чего разработчик не может повторно вызвать контекстное меню или открыть палитру свойств элемента.
Выясним причину такого поведения и рассмотрим все доступные способы выбора заблокированного элемента, а также разберем правильные подходы к ограничению прав на редактирование полей.
В редакторе обычных форм свойство Доступность со значением Ложь отключает реакцию графического компонента на события мыши не только в режиме «Предприятие», но и на самом холсте визуального редактора конфигуратора. В результате элемент визуально отображается, но кликнуть по нему левой или правой кнопкой мыши становится невозможно.
Рассмотрим основной и самый надежный способ получить доступ к любому элементу формы независимо от его параметров доступности и видимости:
F4 (или комбинацию Alt + Enter) для открытия окна Свойства.Разберем быстрый вариант навигации с помощью клавиатуры, не требующий вызова дополнительных меню:
Tab (или Shift + Tab для перемещения в обратном порядке) до тех пор, пока фокус и маркеры выделения не переместятся на заблокированный элемент.Alt + Enter или F4, чтобы отобразить окно свойств для выделенного объекта.Проанализируем визуальный способ захвата элемента:
Если панель Свойства заранее открыта и закреплена у края экрана конфигуратора, то при любом способе переключения фокуса (через Tab или рамку выделения) в ней автоматически отображаются параметры текущего выбранного элемента. Это исключает необходимость вызывать контекстное меню правой кнопкой мыши.
Часто для решения задачи запрета редактирования выбирают некорректное свойство. Рассмотрим разницу между ними:
Доступность = Ложь) — полностью блокирует взаимодействие с элементом. Поле становится серым (неактивным), пользователь не может установить в него курсор, а также выделить и скопировать значение в буфер обмена. В конфигураторе такой элемент перестает нажиматься.ТолькоПросмотр = Истина) — запрещает изменение данных, но сохраняет стандартный контрастный вид поля. Пользователь может войти в поле, выделить текст и скопировать его. При этом в конфигураторе элемент сохраняет возможность стандартного выделения мышью.Чтобы избежать сложностей при визуальной верстке формы, не рекомендуется статически отключать свойство Доступность в палитре свойств конфигуратора. Применим лучшие практики управления доступом:
ПриОткрытии:
Процедура ПриОткрытии()
// Полное отключение доступности поля
ЭлементыФормы.ИмяЭлемента.Доступность = Ложь;
// Либо установка режима только для чтения
ЭлементыФормы.ИмяЭлемента.ТолькоПросмотр = Истина;
КонецПроцедуры
РольДоступна(...) либо ограничиваем права на интерактивное изменение реквизита непосредственно в объекте метаданных.