При активной разработке, отладке конфигураций и выполнении ресурсоемких обработок в 1С:Предприятии комбинация клавиш Ctrl + Break является незаменимым инструментом. Она позволяет экстренно прервать зациклившийся программный код или остановить выполнение длительной операции. Однако на большинстве современных ноутбуков (Xiaomi, HP, Lenovo, Dell, ASUS, а также на клавиатурах Apple) отдельная физическая клавиша Pause/Break отсутствует. Разберем по шагам все возможные способы отправки этой команды в систему и выясним, как обойти аппаратные ограничения.
Производители портативных компьютеров часто не убирают скан-код прерывания полностью, а зашивают его в микроконтроллер клавиатуры через служебную клавишу Fn. На клавиатуре нужная кнопка может быть никак не обозначена, но микропрограмма материнской платы среагирует на стандартную системную связку. Проанализируем типичные комбинации для популярных брендов:
Fn + Right Shift, Fn + Shift + W, Fn + S или полное сочетание Ctrl + Fn + Right Shift.Fn + B (эквивалент клавиши Break), Fn + P (эквивалент Pause) либо Fn + S (эквивалент Scroll Lock). Для прерывания в 1С зажимаем Ctrl + Fn + B.Ctrl + Fn + B, Fn + Insert или Ctrl + Fn + S.Fn + B, Fn + P или сочетание Ctrl + Fn + Esc.Если ни одно из стандартных аппаратных сочетаний не реагирует, перейдем к системным инструментам операционной системы.
Многие пользователи сталкиваются с тем, что при открытии экранной клавиатуры клавиша Break на ней также отсутствует. Выясним причину этой проблемы: в современных версиях Windows сосуществуют два совершенно разных интерфейса виртуального ввода:
osk.exe, содержащая полный набор клавиш стандартной 101/104-клавишной клавиатуры.Рассмотрим правильный порядок действий для отправки прерывания через системную утилиту:
Win + R на физической клавиатуре.osk и нажимаем клавишу ввода.Ctrl на физической клавиатуре (или кликаем мышью по виртуальной кнопке Ctrl, зафиксировав ее нажатие), после чего кликаем мышью по кнопке Pause на экранной клавиатуре. Операционная система отправит честный сигнал аппаратного прерывания.Если прерывать код в 1С приходится регулярно, открывать каждый раз экранную клавиатуру неудобно. Постоянно держать в памяти сторонний софт для перехвата кнопок также не всегда допустимо. В таком случае оптимально переназначить скан-код неиспользуемой физической клавиши (например, Insert, Scroll Lock, правого Ctrl или CapsLock) на системный скан-код Pause/Break.
Разберем, как это работает на уровне ядра операционной системы: за сопоставление физических клавиш отвечает параметр реестра Scancode Map, расположенный в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout. Преимущество данного подхода заключается в том, что операционная система перенаправляет скан-коды на аппаратном уровне драйвера. Это решение не требует автозагрузки сторонних утилит и работает стабильно даже внутри сессий удаленного рабочего стола.
Часто разработка и администрирование 1С выполняются через сеансы Remote Desktop (RDP) с компьютеров под управлением macOS или тонких клиентов. В этой ситуации локальная операционная система может перехватывать системные сочетания и не передавать их на удаленный сервер. Разберем ключевые настройки для гарантированной передачи сигнала:
Cmd + Esc) с виртуальным кодом 0x13 (VK_PAUSE) или 0x03 (VK_CANCEL).osk.exe необходимо выполнять внутри удаленной RDP-сессии, а не на локальной рабочей станции.Важно понимать, в каких случаях нажатие Ctrl + Break действительно остановит выполнение кода, а в каких оно окажется бесполезным. Платформа 1С обрабатывает прерывание пользователя строго по определенным правилам:
ОбработкаПрерыванияПользователя(). Если в зацикленном коде этой процедуры нет, программа проигнорирует нажатие клавиш, и остановить процесс можно будет только принудительным завершением сеанса.Ctrl + Break не может прервать тяжелый SQL-запрос, выполняемый на стороне сервера баз данных, а также длительный сетевой обмен веб-сервиса. Интерфейс клиента будет заблокирован до тех пор, пока серверный вызов не вернет управление.