Почему в РМК конфигурации «Розница» не вводится сумма оплаты с клавиатуры?

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

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

Причина возникновения проблемы

Ошибка вызвана конфликтом механизмов отрисовки элементов интерфейса новой платформы и логики работы управляемых форм в старых релизах Розницы. В процессе работы процедуры ОбновитьФорму происходит перерисовка декораций и иконок (связанных с SMS или Email информированием), что приводит к потере фокуса ввода у поля суммы. Платформа 8.3.10 ведет себя более строго в отношении фокуса, чем предыдущие версии, поэтому после любого программного изменения интерфейса поле ввода «перестает слышать» клавиатуру.

Способ №1: Откат платформы (Рекомендуемый)

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

Способ №2: Правка кода в конфигураторе

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

  1. Запустите 1С в режиме Конфигуратор.
  2. В дереве конфигурации откройте ветку Документы (или Обработки, в зависимости от того, где реализовано РМК) и найдите объект ФормаПростойОплаты.
  3. Дважды кликните по форме, чтобы открыть её редактор.
  4. Перейдите на вкладку Модуль в нижней части окна.
  5. Используйте поиск (Ctrl+F) для перехода к Процедура ОбновитьФорму.
  6. Найдите блок кода, отвечающий за отображение декораций SMS и Email (обычно в конце процедуры) и закомментируйте его с помощью символов //.

Примерно это должно выглядеть так:


// Если ЗначениеЗаполнено(ДанныеSMSИлиEmail) И ЗначениеЗаполнено(ДисконтнаяКарта) Тогда 
//    Если ОтказКлиентаОтСохраненияТелефонаEmail Тогда 
//        Элементы.ДекорацияОтказКлиентаОтСохраненияТелефонаEmail.Картинка = БиблиотекаКартинок.НеСохранять16; 
//    Иначе 
//        Элементы.ДекорацияОтказКлиентаОтСохраненияТелефонаEmail.Картинка = БиблиотекаКартинок.Сохранить16; 
//    КонецЕсли; 
// Иначе 
//    Элементы.ДекорацияОтказКлиентаОтСохраненияТелефонаEmail.Картинка = БиблиотекаКартинок.Пустая; 
// КонецЕсли;

После внесения правок сохраните конфигурацию. Теперь форма перестанет «отнимать» фокус у поля ввода суммы.

Способ №3: Использование расширений конфигурации

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

  1. Создайте новое расширение конфигурации.
  2. Добавьте в него форму ФормаПростойОплаты.
  3. Переопределите процедуру ОбновитьФорму с аннотацией &Вместо.
  4. Внутри переопределенной процедуры выполните аналогичное комментирование кода.

Этот метод позволит вам сохранить типовое обновление в будущем без конфликтов, так как изменения будут храниться отдельно от основного кода конфигурации.

Альтернативный метод: Программная эмуляция

Для продвинутых пользователей можно рассмотреть метод принудительной инициализации поля ввода при открытии формы. В модуле формы можно добавить следующий код:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Добавляем фиктивный ввод, чтобы сбросить состояние фокуса
    ДобавитьЦифру("1");
    КомандаСтереть("");
КонецПроцедуры

Этот метод является временным «костылем» и может работать нестабильно в зависимости от настроек оборудования (сканеров, клавиатур), поэтому лучше использовать исправление через расширение, описанное в способе №3.

Важное напоминание: Перед любыми изменениями в конфигураторе обязательно делайте архивную копию базы данных (dt-файл)! Если у вас возникли сложности с правкой кода, лучше временно вернуться к предыдущей стабильной версии платформы, так как 1С планирует адаптировать работу интерфейсов РМК под новые версии платформы в будущих обновлениях конфигурации.

← На главную