В процессе автоматизации розничной торговли часто возникает необходимость адаптировать рабочее место кассира (РМК) под привычки персонала или специфическое оборудование. Типичный пример — потребность переназначить стандартную горячую клавишу (например, заменить вызов функции «Внести наличные» или «Оплата наличными» со стандартной кнопки F6 на более удобную клавишу + на цифровом блоке клавиатуры).
В этой статье мы подробно разберем, как решить эту задачу в программе 1С:Розница 2.2 на управляемых формах, используя наиболее безопасный и современный подход — механизм расширений конфигурации.
Прежде чем открывать Конфигуратор, давайте проанализируем штатный функционал системы «1С:Розница 2.2». В пользовательском режиме здесь предусмотрен специальный инструмент:
Здесь система позволяет гибко управлять нижним рядом кнопок: добавлять новые действия, менять их названия, цвет и привязывать горячие клавиши. Однако для кнопок основной и верхней панелей (куда как раз и относится оплата наличными по клавише F6) этот механизм неприменим. Эти элементы жестко зафиксированы разработчиками на уровне кода управляемой формы. Начиная с версии «1С:Розница 3.0» и в специализированном решении «1С:РМК», появился полноценный редактор горячих клавиш прямо в режиме предприятия, но в редакции 2.2 нам придется прибегнуть к возможностям разработки.
Чтобы не снимать базу данных с поддержки и сохранить возможность простого автоматического обновления программы, мы применим механизм расширений. Это позволит нам переопределить логику работы формы, не затрагивая основную конфигурацию.
Выполним задачу по шагам:
Адаптация или Дополнение. Снимем флажки «Безопасный режим» и «Защита от опасных действий» для корректной работы программного кода.РМКУправляемый (или документ ЧекККМ в зависимости от конкретного релиза и используемой формы) и найдем форму регистрации продаж (обычно это ФормаРегистрацияПродаж). Нажмем на форму правой кнопкой мыши и выберем пункт Добавить в расширение.ОплатаНаличными или аналогичную ей).При попытке назначить одиночную клавишу + (плюс) или Enter через стандартный диалог выбора сочетания клавиш в Конфигураторе, платформа 1С может выдать ошибку или просто проигнорировать нажатие. Это связано с тем, что одиночные символьные клавиши зарезервированы системой для ввода текста в поля.
Чтобы обойти это системное ограничение, мы применим программное назначение сочетания клавиш при создании формы. Выясним, как это реализовать:
В модуле заимствованной формы РМК создадим обработчик события ПриСозданииНаСервере с аннотацией метода &После. Пропишем следующий код:
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Находим команду оплаты наличными в коллекции команд формы
УправляемаяКоманда = Команды.ОплатаНаличными;
// Программное назначение клавиши "+" с цифровой клавиатуры (Numpad)
УправляемаяКоманда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Add);
КонецПроцедуры
В данном примере свойство Клавиша.Add указывает системе на физическую клавишу «Плюс» на цифровом блоке клавиатуры (Numpad), которая наиболее удобна для кассиров при проведении быстрых расчетов. Если вам требуется назначить клавишу «Плюс» с основного буквенно-цифрового ряда клавиатуры, потребуется перехватывать событие нажатия клавиш на клиенте в процедуре-обработчике ожидания или при изменении текстового поля ввода, однако использование Numpad является общепринятым стандартом для торговых точек.
Рассмотрим еще один практический метод, который вообще не требует внесения изменений в код 1С и конфигурацию. Это использование программируемой POS-клавиатуры.
Если на вашем рабочем месте установлена специализированная клавиатура кассира, вы можете переназначить клавиши физически:
+.F6.При таком подходе при нажатии кассиром на кнопку «Плюс» клавиатура будет посылать в операционную систему сигнал нажатия клавиши F6. Программа 1С воспримет это как штатное действие, и оплата наличными сработает моментально. Данный метод является самым отказоустойчивым, так как настройки не собьются даже при полном обновлении или замене информационной базы 1С.