Как в РМК 1С:Управление торговлей 11 настроить автоматическое создание нового чека и избежать двойных продаж

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

В процессе работы кассира в рабочем месте кассира (РМК) конфигурации «1С:Управление торговлей 11» часто возникает классическая проблема эргономики: после успешного пробития и печати чека старый документ продолжает отображаться на экране. Программа показывает сумму сдачи покупателю, и для перехода к обслуживанию следующего клиента кассиру приходится вручную нажимать кнопку «Новый чек» или использовать горячие клавиши. Это замедляет работу и нередко приводит к ошибкам — например, случайному повторному пробитию того же чека при двойном нажатии клавиши Enter на этапе оплаты.

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

Способ 1. Использование встроенных горячих клавиш

Прежде чем переходить к программированию, давайте рассмотрим стандартную альтернативу кликам мышкой. В типовом интерфейсе РМК для оперативного сброса экрана сдачи и открытия новой формы продажи предусмотрена быстрая комбинация клавиш. Мы можем использовать сочетание Ctrl + F12. Это действие мгновенно очищает экран и подготавливает рабочее место к вводу новых товаров. Однако этот метод все еще требует от кассира концентрации внимания и лишних движений руками.

Способ 2. Программная доработка формы РМК (изменение кода)

Давайте разберем, как автоматизировать этот процесс на уровне программного кода. Наша задача — сделать так, чтобы сразу после успешной печати чека система самостоятельно инициировала команду создания нового документа. Для этого нам необходимо внедрить вызов соответствующей процедуры в логику завершения транзакции.

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

  1. Откроем конфигуратор и найдем форму документа, отвечающую за интерфейс РМК (в УТ 11 это обычно ФормаДокументаРМК или специализированная форма в составе обработок РМК).
  2. Найдем процедуру ЗавершениеОплаты. Именно она отвечает за финальные действия системы после того, как фискальный регистратор успешно напечатал чек и транзакция по эквайрингу (при наличии) была подтверждена.
  3. Добавим условие, которое проверяет статус текущего документа. Если статус указывает на то, что операция успешно завершена, мы принудительно вызываем метод инициализации нового чека.

Пример программного кода для встраивания в процедуру ЗавершениеОплаты:


&НаКлиенте
Процедура ЗавершениеОплаты(РезультатВыполнения, ДополнительныеПараметры) Экспорт
    // [Стандартный код обработки завершения оплаты]
    
    // Внедряем автоматический переход к новому чеку:
    Если Строка(Объект.Статус) = "Чек пробит" Тогда
        ЗагрузитьНовыйЧек();
    КонецЕсли;
КонецПроцедуры

Метод ЗагрузитьНовыйЧек() является стандартным для РМК. Он очищает табличную часть товаров, сбрасывает информацию о скидках, клиентах и подготавливает форму к сканированию следующего штрихкода.

Способ 3. Использование расширения конфигурации (без снятия с поддержки)

Если ваша информационная база находится на стандартной поддержке и регулярно обновляется, вносить изменения напрямую в основную конфигурацию крайне не рекомендуется. Для этого мы применим механизм расширений конфигурации (файлы с расширением .cfe).

Мы можем перехватить выполнение процедуры ЗавершениеОплаты с помощью аннотации &После. Разберем пример реализации в модуле расширения:


&После("ЗавершениеОплаты")
Процедура Расш1_ЗавершениеОплаты(РезультатВыполнения, ДополнительныеПараметры)
    Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЧековККМ.Пробит") Тогда
        ЭтотОбъект.ЗагрузитьНовыйЧек();
    КонецЕсли;
КонецПроцедуры

Этот способ позволяет безболезненно обновлять «1С:Управление торговлей», так как весь кастомный код изолирован в расширении. Подключить его можно в режиме «1С:Предприятие» через меню Администрирование — Печатные формы, отчеты и обработки — Расширения.

Способ 4. Решение проблемы повторного пробития чеков при двойном нажатии Enter

Часто кассиры при закрытии чека наличными торопятся и случайно нажимают клавишу Enter дважды. Из-за микрозадержек связи между учетной системой и кассовым аппаратом (ККТ) программа отправляет команду на печать повторно, что приводит к дублированию чека на фискальном накопителе или к возникновению аппаратной ошибки. Мы можем решить эту проблему как на программном, так и на аппаратном уровне. Для дополнительного информирования кассира о завершении транзакции подойдет расширение для озвучивания пробития чека в УТ 11.5.

Вариант А. Программная проверка статуса в 1С
Для предотвращения повторной отправки команды на оплату, добавим проверку в процедуры оплаты (например, ОплатитьНаличными или в обобщенную процедуру обработки платежа):


&НаКлиенте
Процедура ОплатитьНаличными(Команда)
    // Предотвращение повторного срабатывания при двойном клике:
    Если Строка(Объект.Статус) = "Чек пробит" Тогда
        ПоказатьПредупреждение(, "Этот чек уже успешно пробит!");
        Возврат;
    КонецЕсли;
    
    // [Стандартный алгоритм проведения оплаты]
КонецПроцедуры

Вариант Б. Настройка задержки ввода в операционной системе Windows
Часто физическая клавиатура генерирует повторные сигналы слишком быстро. Чтобы нивелировать этот эффект, настроим параметры клавиатуры в ОС на кассовом компьютере:

  1. Откройте Панель управления Windows и перейдите в раздел Клавиатура.
  2. На вкладке Скорость найдите параметр «Задержка перед началом повтора» и передвиньте ползунок в сторону значения «Длинная».
  3. Параметр «Скорость повтора» установите на более низкое значение. Это защитит систему от многократного считывания зажатой или быстро нажатой клавиши Enter.

Вариант В. Настройка уникальности документов в драйвере ККТ
Современные драйверы онлайн-касс (например, АТОЛ 10.х или Штрих-М) обладают встроенной защитой от печати дублирующихся чеков:

  1. Запустите тест драйвера ККТ и подключитесь к вашей кассе.
  2. Перейдите в параметры ККТ (раздел настроек свойств).
  3. Найдите параметры контроля документов или настроек ФН.
  4. Включите опцию «Контроль уникальности номеров чеков» или настройте временную блокировку повторной печати (например, запрет печати идентичного документа в течение 3-5 секунд). При повторном ложном сигнале касса просто проигнорирует команду, не создавая фискального дубля.

Способ 5. Как это реализовано в современных версиях 1С (УТ 11.4 / 11.5 и 1С:РМК)

Если вы планируете переход на актуальные версии программных продуктов (УТ 11.5, Розница 3.0, УНФ 3.0 или специализированное решение «1С:РМК»), то необходимость в доработке кода отпадает. Фирма «1С» переработала эргономику интерфейса:

← На главную