Как полностью отключить стандартные команды и горячие клавиши в 1С:Предприятии 8.3

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

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

Анализ проблемы: почему кнопки исчезают, а команды остаются

Проанализируем ситуацию: когда мы в редакторе формы убираем команду из состава командной панели или снимаем галочку у свойства Кнопка выбора, мы влияем только на визуальное отображение интерфейса. Однако сама логика поведения объекта (табличной части или поля ввода) остается прежней. Платформа по умолчанию резервирует горячие клавиши для стандартных действий. Чтобы их нейтрализовать, нам нужно вмешаться в логику событий или перехватить управление на уровне команд.

Способ 1. Использование обработчиков событий для подавления действий

Это самый надежный и «правильный» с точки зрения архитектуры 1С метод. Почти у каждого интерактивного действия есть событие, которое начинается со слова «Перед» или «При». В таких событиях часто доступен параметр СтандартнаяОбработка.

Блокировка копирования строки (F9)

Рассмотрим табличную часть. Даже если вы удалили кнопку «Скопировать», нажатие F9 вызовет создание новой строки. Чтобы это пресечь, создадим обработчик события ПередДобавлениемСтроки для таблицы формы. Проанализируем код:


&НаКлиенте
Процедура ИмяТаблицыПередДобавлениемСтроки(Элемент, Отказ, Копирование, Родитель, Группа, Параметры)
    Если Копирование Тогда
        // Если флаг Копирование установлен в Истина, значит пользователь нажал F9 
        // или выбрал "Скопировать" в контекстном меню.
        Отказ = Истина; 
        Сообщить("Копирование строк в данном документе запрещено!");
    КонецЕсли;
КонецПроцедуры

Блокировка выбора из списка (F4)

Для полей ввода установка свойства КнопкаВыбора = Нет лишь скрывает «лупу». Нажатие F4 все равно откроет форму выбора. Чтобы этого не случилось, воспользуемся событием НачалоВыбора:


&НаКлиенте
Процедура ИмяПоляНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Отключаем системный механизм открытия формы выбора
    СтандартнаяОбработка = Ложь;
    
    // Здесь можно реализовать свою логику или просто оставить процедуру пустой
КонецПроцедуры

Способ 2. Переопределение горячих клавиш через фиктивные команды

Рассмотрим более хитрый метод, который позволяет «перехватить» нажатие клавиши еще до того, как оно дойдет до стандартного обработчика элемента. Мы можем создать собственную команду формы и назначить ей ту же горячую клавишу.

  1. Перейдем на закладку Команды в редакторе управляемой формы.
  2. Создадим новую команду, например, с именем Заглушка_F9.
  3. В свойствах команды найдем пункт Сочетание клавиш и выберем F9.
  4. Создадим действие команды (процедуру на клиенте), но оставим её абсолютно пустой.

Теперь, когда пользователь нажмет F9, фокус управления перейдет к нашей пустой команде. Платформа увидит, что для этой клавиши назначена конкретная команда формы, и не будет выполнять стандартное копирование строки. Этот метод отлично работает для блокировки F2, F4, Del и других системных сочетаний.

Способ 3. Управление составом команд и контекстным меню

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

Разберем настройки свойств таблицы формы:

Способ 4. Ограничение через права и свойства «Только просмотр»

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

Если мы установим для всей таблицы ТолькоПросмотр = Истина, то горячие клавиши изменения (например, F2 или Del) перестанут работать автоматически. Но если нам нужно разрешить добавление новых строк, но запретить изменение существующих полей, мы можем установить свойство ТолькоПросмотр для каждой конкретной колонки (элемента пути данных).

Проанализируем работу свойства РежимРедактирования у таблицы. Оно может принимать значения:

Изменение этого режима в сочетании с обработчиком ПриНачалеРедактирования позволяет гибко управлять поведением платформы при нажатии клавиш ввода данных.

Подведем итоги

Для надежного отключения стандартных команд в 1С 8.3 следует придерживаться комплексного подхода:

  1. Для блокировки F9 (копирование) используем Отказ = Истина в событии ПередДобавлениемСтроки при условии Копирование = Истина.
  2. Для блокировки F4 (выбор) используем СтандартнаяОбработка = Ложь в событии НачалоВыбора.
  3. Для гарантированного перехвата любых клавиш создаем «пустые» команды формы с назначенными Shortcut.
  4. Отключаем Автозаполнение контекстного меню, чтобы убрать лазейки для пользователя.

Помните, что платформа 8.3.15 и старше активно развивает механизмы доступности, поэтому программное управление через СтандартнаяОбработка остается самым стабильным методом, не зависящим от будущих обновлений интерфейса «Такси».

← На главную