В процессе работы кассира в рабочем месте кассира (РМК) конфигурации «1С:Управление торговлей 11» часто возникает классическая проблема эргономики: после успешного пробития и печати чека старый документ продолжает отображаться на экране. Программа показывает сумму сдачи покупателю, и для перехода к обслуживанию следующего клиента кассиру приходится вручную нажимать кнопку «Новый чек» или использовать горячие клавиши. Это замедляет работу и нередко приводит к ошибкам — например, случайному повторному пробитию того же чека при двойном нажатии клавиши Enter на этапе оплаты.
В этой статье мы подробно разберем, как оптимизировать этот процесс. Мы рассмотрим штатные возможности системы, способы программной доработки через расширение конфигурации, а также системные настройки оборудования для защиты от дублирования чеков.
Прежде чем переходить к программированию, давайте рассмотрим стандартную альтернативу кликам мышкой. В типовом интерфейсе РМК для оперативного сброса экрана сдачи и открытия новой формы продажи предусмотрена быстрая комбинация клавиш. Мы можем использовать сочетание Ctrl + F12. Это действие мгновенно очищает экран и подготавливает рабочее место к вводу новых товаров. Однако этот метод все еще требует от кассира концентрации внимания и лишних движений руками.
Давайте разберем, как автоматизировать этот процесс на уровне программного кода. Наша задача — сделать так, чтобы сразу после успешной печати чека система самостоятельно инициировала команду создания нового документа. Для этого нам необходимо внедрить вызов соответствующей процедуры в логику завершения транзакции.
Проанализируем структуру формы РМК. Основная обработка завершения кассовой смены и проведения оплаты сосредоточена в форме документа РМК. Выполним следующие шаги по доработке:
ФормаДокументаРМК или специализированная форма в составе обработок РМК).ЗавершениеОплаты. Именно она отвечает за финальные действия системы после того, как фискальный регистратор успешно напечатал чек и транзакция по эквайрингу (при наличии) была подтверждена.Пример программного кода для встраивания в процедуру ЗавершениеОплаты:
&НаКлиенте
Процедура ЗавершениеОплаты(РезультатВыполнения, ДополнительныеПараметры) Экспорт
// [Стандартный код обработки завершения оплаты]
// Внедряем автоматический переход к новому чеку:
Если Строка(Объект.Статус) = "Чек пробит" Тогда
ЗагрузитьНовыйЧек();
КонецЕсли;
КонецПроцедуры
Метод ЗагрузитьНовыйЧек() является стандартным для РМК. Он очищает табличную часть товаров, сбрасывает информацию о скидках, клиентах и подготавливает форму к сканированию следующего штрихкода.
Если ваша информационная база находится на стандартной поддержке и регулярно обновляется, вносить изменения напрямую в основную конфигурацию крайне не рекомендуется. Для этого мы применим механизм расширений конфигурации (файлы с расширением .cfe).
Мы можем перехватить выполнение процедуры ЗавершениеОплаты с помощью аннотации &После. Разберем пример реализации в модуле расширения:
&После("ЗавершениеОплаты")
Процедура Расш1_ЗавершениеОплаты(РезультатВыполнения, ДополнительныеПараметры)
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЧековККМ.Пробит") Тогда
ЭтотОбъект.ЗагрузитьНовыйЧек();
КонецЕсли;
КонецПроцедуры
Этот способ позволяет безболезненно обновлять «1С:Управление торговлей», так как весь кастомный код изолирован в расширении. Подключить его можно в режиме «1С:Предприятие» через меню Администрирование — Печатные формы, отчеты и обработки — Расширения.
Часто кассиры при закрытии чека наличными торопятся и случайно нажимают клавишу Enter дважды. Из-за микрозадержек связи между учетной системой и кассовым аппаратом (ККТ) программа отправляет команду на печать повторно, что приводит к дублированию чека на фискальном накопителе или к возникновению аппаратной ошибки. Мы можем решить эту проблему как на программном, так и на аппаратном уровне. Для дополнительного информирования кассира о завершении транзакции подойдет расширение для озвучивания пробития чека в УТ 11.5.
Вариант А. Программная проверка статуса в 1С
Для предотвращения повторной отправки команды на оплату, добавим проверку в процедуры оплаты (например, ОплатитьНаличными или в обобщенную процедуру обработки платежа):
&НаКлиенте
Процедура ОплатитьНаличными(Команда)
// Предотвращение повторного срабатывания при двойном клике:
Если Строка(Объект.Статус) = "Чек пробит" Тогда
ПоказатьПредупреждение(, "Этот чек уже успешно пробит!");
Возврат;
КонецЕсли;
// [Стандартный алгоритм проведения оплаты]
КонецПроцедуры
Вариант Б. Настройка задержки ввода в операционной системе Windows
Часто физическая клавиатура генерирует повторные сигналы слишком быстро. Чтобы нивелировать этот эффект, настроим параметры клавиатуры в ОС на кассовом компьютере:
Enter.Вариант В. Настройка уникальности документов в драйвере ККТ
Современные драйверы онлайн-касс (например, АТОЛ 10.х или Штрих-М) обладают встроенной защитой от печати дублирующихся чеков:
Если вы планируете переход на актуальные версии программных продуктов (УТ 11.5, Розница 3.0, УНФ 3.0 или специализированное решение «1С:РМК»), то необходимость в доработке кода отпадает. Фирма «1С» переработала эргономику интерфейса: