Почему элемент обычной формы в Конфигураторе 1С перестает выделяться мышью при отключении доступности?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При разработке интерфейсов в режиме обычных форм (толстый клиент) разработчики часто сталкиваются с неожиданным поведением: если снять флаг Доступность в палитре свойств элемента управления, по нему становится невозможно кликнуть мышью непосредственно на макете формы для повторного редактирования или перемещения. Разберем причины такого поведения платформы 1С:Предприятие, выясним, как выделить заблокированный элемент, и рассмотрим лучшие практики управления доступностью полей.

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

Проанализируем техническую сторону вопроса. Визуальный редактор обычных форм платформы 1С:Предприятие 8 построен по принципу прямого отображения элементов операционной системы (интерфейс Win32 / WYSIWYG):

  1. Системный флаг блокировки: При установке свойства Доступность в значение Ложь визуальному окну элемента присваивается статус WS_DISABLED. В результате операционная система перестает передавать события щелчков мыши данному окну, из-за чего среда разработки Конфигуратора не может перехватить прямой клик по элементу.
  2. Особенности версий и архитектуры: Данный эффект присутствует во всех версиях платформы (начиная с 8.0 и заканчивая актуальными релизами 8.3) для обычных форм. В управляемых формах эта проблема отсутствует, так как редактор управляемого интерфейса разделен на дерево элементов и декларативную модель предпросмотра.

Способы выделения недоступного элемента на макете

Если элемент уже заблокирован и по нему не удается нажать мышью, воспользуемся одним из следующих способов навигации в Конфигураторе:

  1. Через выпадающий список палитры свойств: Откроем панель свойств формы. В самом верху палитры расположен выпадающий список всех элементов управления текущей формы. Выберем нужное имя элемента из списка — фокус и рамка выделения автоматически установятся на него на макете.
  2. Клавиатурная навигация: Выделим любой соседний доступный элемент на форме и будем нажимать клавишу Tab (для перемещения вперед) или сочетание Shift + Tab (для перемещения назад). Фокус последовательно перейдет на заблокированный элемент.
  3. Групповое выделение рамкой: Зажмем левую кнопку мыши на пустом месте формы рядом с элементом и «протянем» рамку выделения так, чтобы она захватила заблокированный элемент управления. После этого снимем выделение с лишних объектов, удерживая клавишу Ctrl.
  4. Через окно «Порядок обхода»: Перейдем в главное меню Конфигуратора «Форма» → «Порядок обхода...». В открывшемся диалоговом окне найдем требуемый элемент — выбор строки в списке активирует элемент на форме.

Правильные подходы к ограничению редактирования данных

Рассмотрим, как избежать неудобств при визуальной разработке и сделать интерфейс более комфортным для пользователя.

Вариант 1. Использование свойства «ТолькоПросмотр»

Если необходимо запретить редактирование значения пользователем, но сохранить возможность копирования текста или перехода по ссылке (кнопка открытия в поле ввода), установим свойство ТолькоПросмотр (флаг Истина), оставив свойство Доступность включенным. В этом случае элемент останется интерактивным в редакторе Конфигуратора.

Вариант 2. Программное отключение доступности в модуле формы

В дизайнере формы оставим свойство Доступность включенным (значение по умолчанию), а фактическую блокировку элемента выполним программно при инициализации формы. Посмотрим на пример кода в модуле формы:


Процедура ПриОткрытии()
    // Блокируем элемент управления программно при открытии формы
    ЭлементыФормы.Наименование.Доступность = Ложь;
КонецПроцедуры

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

← На главную