Как изменить горячие клавиши кнопок РМК в конфигурации 1С:Розница 2.2?

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

В процессе автоматизации розничной торговли часто возникает необходимость адаптировать рабочее место кассира (РМК) под привычки персонала или специфическое оборудование. Типичный пример — потребность переназначить стандартную горячую клавишу (например, заменить вызов функции «Внести наличные» или «Оплата наличными» со стандартной кнопки F6 на более удобную клавишу + на цифровом блоке клавиатуры).

В этой статье мы подробно разберем, как решить эту задачу в программе 1С:Розница 2.2 на управляемых формах, используя наиболее безопасный и современный подход — механизм расширений конфигурации.

Штатные возможности настройки и их ограничения

Прежде чем открывать Конфигуратор, давайте проанализируем штатный функционал системы «1С:Розница 2.2». В пользовательском режиме здесь предусмотрен специальный инструмент:

  1. Перейдем в раздел Продажи, далее выберем пункт Настройки РМК.
  2. В открывшейся форме найдем вкладку Кнопки нижней панели.

Здесь система позволяет гибко управлять нижним рядом кнопок: добавлять новые действия, менять их названия, цвет и привязывать горячие клавиши. Однако для кнопок основной и верхней панелей (куда как раз и относится оплата наличными по клавише F6) этот механизм неприменим. Эти элементы жестко зафиксированы разработчиками на уровне кода управляемой формы. Начиная с версии «1С:Розница 3.0» и в специализированном решении «1С:РМК», появился полноценный редактор горячих клавиш прямо в режиме предприятия, но в редакции 2.2 нам придется прибегнуть к возможностям разработки.

Реализация задачи в Конфигураторе с помощью расширения

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

Выполним задачу по шагам:

  1. Создание расширения. Откроем базу в режиме «Конфигуратор». В меню перейдем: Конфигурация — Расширения конфигурации. Добавим новое расширение с назначением Адаптация или Дополнение. Снимем флажки «Безопасный режим» и «Защита от опасных действий» для корректной работы программного кода.
  2. Заимствование формы РМК. В дереве объектов основной конфигурации найдем обработку РМКУправляемый (или документ ЧекККМ в зависимости от конкретного релиза и используемой формы) и найдем форму регистрации продаж (обычно это ФормаРегистрацияПродаж). Нажмем на форму правой кнопкой мыши и выберем пункт Добавить в расширение.
  3. Поиск нужной команды. Откроем заимствованную форму в расширении. Обратите внимание, что горячие клавиши в управляемых формах 1С привязываются не к визуальной кнопке на экране, а к Команде, которую эта кнопка вызывает. Перейдем на вкладку Команды в правом верхнем углу окна редактора формы. Нам необходимо найти команду, отвечающую за наличный расчет (например, ОплатаНаличными или аналогичную ей).
  4. Изменение свойств. Откроем палитру свойств выбранной команды. Найдем свойство Сочетание клавиш. Попробуем интерактивно задать новое значение.

Программный обход ограничений для клавиши «Плюс» (+)

При попытке назначить одиночную клавишу + (плюс) или Enter через стандартный диалог выбора сочетания клавиш в Конфигураторе, платформа 1С может выдать ошибку или просто проигнорировать нажатие. Это связано с тем, что одиночные символьные клавиши зарезервированы системой для ввода текста в поля.

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

В модуле заимствованной формы РМК создадим обработчик события ПриСозданииНаСервере с аннотацией метода &После. Пропишем следующий код:


&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Находим команду оплаты наличными в коллекции команд формы
    УправляемаяКоманда = Команды.ОплатаНаличными;
    
    // Программное назначение клавиши "+" с цифровой клавиатуры (Numpad)
    УправляемаяКоманда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Add);
    
КонецПроцедуры

В данном примере свойство Клавиша.Add указывает системе на физическую клавишу «Плюс» на цифровом блоке клавиатуры (Numpad), которая наиболее удобна для кассиров при проведении быстрых расчетов. Если вам требуется назначить клавишу «Плюс» с основного буквенно-цифрового ряда клавиатуры, потребуется перехватывать событие нажатия клавиш на клиенте в процедуре-обработчике ожидания или при изменении текстового поля ввода, однако использование Numpad является общепринятым стандартом для торговых точек.

Альтернативный вариант: Настройка на уровне оборудования

Рассмотрим еще один практический метод, который вообще не требует внесения изменений в код 1С и конфигурацию. Это использование программируемой POS-клавиатуры.

Если на вашем рабочем месте установлена специализированная клавиатура кассира, вы можете переназначить клавиши физически:

  1. Запустите сервисную утилиту, которая поставляется в комплекте с вашей программируемой клавиатурой.
  2. Выберите на виртуальной раскладке клавишу +.
  3. Запрограммируйте её на отправку скан-кода клавиши F6.
  4. Запишите конфигурацию в память клавиатуры.

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

← На главную