Почему в РМК 1С:Розница перестала работать клавиша Enter при оплате наличными и как это исправить?

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

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

Выясняем причину: конфликт платформы и режима совместимости

Проанализируем ситуацию с технической точки зрения. Основная причина кроется не в поломке клавиатуры и не в ошибках операционной системы Windows. Проблема возникла на стыке обновлений платформы 1С:Предприятие 8.3 и конфигурации Розница 2.2. Начиная с версии платформы 8.3.12, разработчики изменили механизмы обработки событий управляемых форм и поведение «кнопки по умолчанию».

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

Решение 1: Использование рекомендованной версии платформы

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

  1. Проверим текущую версию конфигурации. Если у вас Розница 2.2.9.20 или аналогичные релизы того периода, использование платформы версии 8.3.11, 8.3.12 и выше крайне не рекомендуется.
  2. Установим платформу версии 8.3.10.2772. Эта версия считается наиболее стабильной для ветки Розницы 2.2, работающей в режиме совместимости.
  3. Важно помнить, что при установке новой платформы старые версии обычно не удаляются автоматически. Они хранятся в разных папках по пути C:\Program Files (x86)\1cv8\. Проанализируем список установленных версий и в настройках запуска информационной базы (в окне выбора баз кнопка «Изменить» — далее до последней страницы) укажем конкретную версию запуска 8.3.10.2772.

После запуска на корректной платформе функциональность горячих клавиш в РМК должна восстановиться в полном объеме.

Решение 2: Полное обновление конфигурации и платформы

Если бизнес-процессы позволяют, лучшим долгосрочным решением будет уход от режима совместимости. Разберем, как это реализовать:

Выясним, какая связка версий является актуальной на текущий момент. В релизах Розница 2.2.11 и выше разработчики внесли правки в код форм РМК, которые учитывают особенности работы новых платформ. Критически важно обновлять оба компонента одновременно: сначала платформу (до актуальной версии, например 8.3.13.1644 и выше), а затем саму конфигурацию «Розница».

Обратите внимание: если обновить только платформу, оставив старую конфигурацию, проблема с Enter останется или даже усугубится. Только актуальные релизы конфигурации корректно обрабатывают фокус на кнопках оплаты в новых версиях 1С:Предприятия.

Решение 3: Программное исправление через расширение или правку формы

Для тех, кто использует версию ПРОФ и имеет возможность вносить изменения в код или использовать расширения, существует способ принудительно вернуть фокус кнопке. Посмотрим на пример логики, которую можно реализовать в расширении для формы оплаты:

Проанализируем свойства формы оплаты наличными. Нам необходимо убедиться, что у кнопки «Оплатить» (или «Завершить оплату») установлено свойство КнопкаПоУмолчанию в значение Истина. Однако в новых платформах этого может быть недостаточно, если элемент скрыт или не активен в момент открытия окна. Рассмотрим программный код, который можно добавить в процедуру ПриОткрытии формы оплаты:


&НаСервере
Процедура ПриОткрытииНаСервере()
    Элементы.КнопкаОплатитьНаличными.Видимость = Истина;
    ЭтаФорма.КнопкаПоУмолчанию = Элементы.КнопкаОплатитьНаличными;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ТекущийЭлемент = Элементы.ВнесеннаяСуммаНаличные;
КонецПроцедуры

Установка свойства Видимость = Истина (даже если оно и так кажется включенным в конфигураторе) часто «будит» обработчик платформы, заставляя его корректно привязывать клавишу Enter к действию кнопки.

Решение 4: Исправление логики группировки товаров (для продвинутых)

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

Выясним причину в коде. В некоторых релизах процедура поиска строк товаров в табличной части работает не совсем корректно при использовании упаковок. Проанализируем фрагмент кода:


// Старый вариант, который может вызывать проблемы с дублированием строк и потерей фокуса
МассивТоваров = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура, Характеристика, Упаковка", Номенклатура, Характеристика, Упаковка));

// Исправленный вариант для более стабильной работы
МассивТоваров = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура, Характеристика", Номенклатура, Характеристика));

Если у нескольких позиций номенклатуры при попадании в табличную часть затирается или неверно определяется реквизит Упаковка, алгоритм Объект.Товары.Добавить() начинает плодить новые строки вместо обновления существующих. Это создает лишние события обновления формы, которые в момент финализации чека могут блокировать стандартные обработчики нажатия клавиш.

Дополнительные рекомендации

Рассмотрим еще несколько нюансов, которые могут помочь в решении проблемы без правки кода:

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

← На главную