Многие пользователи и администраторы программы 1С:Розница сталкиваются с досадной проблемой: при оформлении продажи в режиме Рабочего места кассира (РМК) перестает реагировать «большая желтая кнопка» или клавиша Enter на клавиатуре. Особенно странно это выглядит, когда при оплате картой всё работает штатно, а при выборе наличного расчета кнопка «Завершить оплату» игнорирует нажатие клавиш, вынуждая кассира тянуться к мышке. Рассмотрим подробнее, почему это происходит и какими способами можно вернуть привычную работоспособность интерфейсу.
Проанализируем ситуацию с технической точки зрения. Основная причина кроется не в поломке клавиатуры и не в ошибках операционной системы Windows. Проблема возникла на стыке обновлений платформы 1С:Предприятие 8.3 и конфигурации Розница 2.2. Начиная с версии платформы 8.3.12, разработчики изменили механизмы обработки событий управляемых форм и поведение «кнопки по умолчанию».
Если ваша конфигурация «Розница» выпущена раньше, чем эти изменения (например, релизы версии 2.2.9 и ниже), она работает в так называемом «режиме совместимости» со старыми версиями платформы. Когда такая «старая» конфигурация запускается на «новой» платформе, фокус ввода в окне оплаты наличными теряется. Программа просто «не понимает», что нажатие Enter должно приводить к нажатию кнопки завершения платежа, так как фокус остается на поле ввода суммы или вовсе уходит с активных элементов управления.
Самый простой и официально подтвержденный службой поддержки 1С способ — это использование строго определенной версии платформы для конкретного релиза конфигурации. Разберем по шагам, что нужно сделать:
8.3.11, 8.3.12 и выше крайне не рекомендуется.C:\Program Files (x86)\1cv8\. Проанализируем список установленных версий и в настройках запуска информационной базы (в окне выбора баз кнопка «Изменить» — далее до последней страницы) укажем конкретную версию запуска 8.3.10.2772.После запуска на корректной платформе функциональность горячих клавиш в РМК должна восстановиться в полном объеме.
Если бизнес-процессы позволяют, лучшим долгосрочным решением будет уход от режима совместимости. Разберем, как это реализовать:
Выясним, какая связка версий является актуальной на текущий момент. В релизах Розница 2.2.11 и выше разработчики внесли правки в код форм РМК, которые учитывают особенности работы новых платформ. Критически важно обновлять оба компонента одновременно: сначала платформу (до актуальной версии, например 8.3.13.1644 и выше), а затем саму конфигурацию «Розница».
Обратите внимание: если обновить только платформу, оставив старую конфигурацию, проблема с Enter останется или даже усугубится. Только актуальные релизы конфигурации корректно обрабатывают фокус на кнопках оплаты в новых версиях 1С:Предприятия.
Для тех, кто использует версию ПРОФ и имеет возможность вносить изменения в код или использовать расширения, существует способ принудительно вернуть фокус кнопке. Посмотрим на пример логики, которую можно реализовать в расширении для формы оплаты:
Проанализируем свойства формы оплаты наличными. Нам необходимо убедиться, что у кнопки «Оплатить» (или «Завершить оплату») установлено свойство КнопкаПоУмолчанию в значение Истина. Однако в новых платформах этого может быть недостаточно, если элемент скрыт или не активен в момент открытия окна. Рассмотрим программный код, который можно добавить в процедуру ПриОткрытии формы оплаты:
&НаСервере
Процедура ПриОткрытииНаСервере()
Элементы.КнопкаОплатитьНаличными.Видимость = Истина;
ЭтаФорма.КнопкаПоУмолчанию = Элементы.КнопкаОплатитьНаличными;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ТекущийЭлемент = Элементы.ВнесеннаяСуммаНаличные;
КонецПроцедуры
Установка свойства Видимость = Истина (даже если оно и так кажется включенным в конфигураторе) часто «будит» обработчик платформы, заставляя его корректно привязывать клавишу Enter к действию кнопки.
Иногда клавиша Enter «отваливается» косвенно из-за ошибок в табличной части товаров. Рассмотрим ситуацию, когда при сканировании или вводе товара программа некорректно обрабатывает упаковки, из-за чего фокус формы постоянно перескакивает, сбивая готовность кнопки к нажатию.
Выясним причину в коде. В некоторых релизах процедура поиска строк товаров в табличной части работает не совсем корректно при использовании упаковок. Проанализируем фрагмент кода:
// Старый вариант, который может вызывать проблемы с дублированием строк и потерей фокуса
МассивТоваров = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура, Характеристика, Упаковка", Номенклатура, Характеристика, Упаковка));
// Исправленный вариант для более стабильной работы
МассивТоваров = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура, Характеристика", Номенклатура, Характеристика));
Если у нескольких позиций номенклатуры при попадании в табличную часть затирается или неверно определяется реквизит Упаковка, алгоритм Объект.Товары.Добавить() начинает плодить новые строки вместо обновления существующих. Это создает лишние события обновления формы, которые в момент финализации чека могут блокировать стандартные обработчики нажатия клавиш.
Рассмотрим еще несколько нюансов, которые могут помочь в решении проблемы без правки кода:
CR/LF (Enter), настроенный на сканере, конфликтует с внутренними обработчиками РМК, заставляя форму закрываться или переключаться раньше времени.Подводя итог, можно сказать, что проблема носит комплексный характер. Для быстрого исправления «здесь и сейчас» используйте откат на платформу 8.3.10.2772. Для стратегического решения — планируйте обновление конфигурации до последних актуальных релизов ветки 2.2 или переход на 2.3, где данные ошибки платформенной совместимости уже полностью устранены.