В процессе розничной торговли часто возникает неприятная ситуация: утром первого рабочего дня или в начале новой смены приходит покупатель с требованием оформить возврат товара и получить назад денежные средства. Кассир пытается пробить чек возврата прихода, однако кассовый аппарат АТОЛ выдает ошибку о невозможности проведения операции из-за недостатка денежных средств в денежном ящике ККТ.
Выясним причину этой проблемы. Дело в том, что при закрытии предыдущей смены и снятии вечернего Z-отчета в кассе сработал механизм автоматической инкассации (изъятия). Программа ККТ обнулила виртуальный денежный ящик устройства, хотя физически разменная монета и купюры могли остаться в кассе. ККТ АТОЛ по умолчанию строго контролирует баланс своего регистра наличности. Если на балансе ККТ числится 0.00 рублей, то совершить операцию выплаты (коей и является возврат) касса программно не позволит.
Ниже мы подробно рассмотрим несколько способов решения данной проблемы — от радикального отключения контроля наличности до оперативного временного внесения денежных средств в кассу.
Если на вашем рабочем месте используются классические версии драйверов АТОЛ (например, ДТО 8.х или 9.х) и касса работает под управлением Платформы 2.5, управление контролем наличности осуществляется через прямое редактирование внутренних таблиц фискального накопителя.
Разберем по шагам, как отключить этот контроль через утилиту «Тест драйвера ККТ»:
0 или снятый флаг в зависимости от версии утилиты).В современных конфигурациях оборудования АТОЛ, работающих на Платформе 5.0 и управляемых десятой версией драйверов (DTO 10), структура хранения настроек значительно изменилась. Прямой доступ к старым таблицам («Таблица 2, Ряд 1, Поле 115») скрыт за пользовательским интерфейсом. Проанализируем, как решить задачу в современном ПО.
Для отключения контроля наличности в ДТО 10 выполним следующие действия:
Если в вашем графическом интерфейсе ДТО 10 данная галочка отсутствует (такое случается на промежуточных версиях прошивок), мы можем отключить контроль через прямое низкоуровневое программирование параметра по его внутреннему номеру:
56 (это системный идентификатор параметра «Учет наличности» в Платформе 5.0).1, что означает активный контроль).0 (контроль отключен).Если вы хотите, чтобы ККТ всегда знала реальный остаток денежных средств и переносила его на следующий день, оптимальным решением будет отключение автоматической инкассации. В таком случае вечернее закрытие смены (снятие Z-отчета) не будет обнулять кассу.
Для этого в свойствах ККТ в разделе «Основные» или «Правила работы» необходимо найти опцию «Автоматическая инкассация» (или «Производить инкассацию при закрытии смены») и деактивировать её. В результате вся выручка будет накапливаться на балансе ККТ, и кассиру не придется сталкиваться с ошибкой нехватки денег при утренних возвратах. Реальный вывод денег из денежного ящика в таком режиме оформляется вручную операцией «Выплата».
Бывают случаи, когда внутренние регламенты компании или требования главного бухгалтера строго запрещают отключать контроль наличности в кассе во избежание злоупотреблений и ошибок со стороны кассиров. В такой ситуации проблему с утренним возвратом можно решить без изменения глобальных настроек ККТ с помощью операции «Служебное внесение».
Если ваша товароучетная система (например, 1С:Розница или 1С:Управление торговлей) настроена корректно, вы можете сделать внесение непосредственно из интерфейса кассира. Программа создаст внутренний документ, передаст команду на кассу, баланс ККТ увеличится, и чек возврата успешно пробивается. Если же 1С блокирует операцию из-за проверок проведения по регистрам, внесение можно сделать напрямую через драйвер.
Рассмотрим, как быстро выполнить служебное внесение через «Тест драйвера ККТ»:
Посмотрим на пример того, как разработчик может реализовать команду служебного внесения программно в коде 1С, если типовые механизмы дают сбой. Для этого используется прямое обращение к COM-объекту или внешней компоненте драйвера АТОЛ:
// Создание объекта интеграции с ККТ АТОЛ 10-й версии
ОбъектДрайвера = Новый COMОбъект("AddIn.Fptr10");
ОбъектДрайвера.open();
Если ОбъектДрайвера.isOpened() Тогда
// Задаем сумму для выполнения служебного внесения денег
СуммаВнесения = 1000.00;
ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_SUM, СуммаВнесения);
// Вызов метода внесения денег в ККТ
Если ОбъектДрайвера.cashIn() <> 0 Тогда
ЗаписьЖурналаРегистрации("ККТ", УровеньЖурналаРегистрации.Ошибка, , ,
"Ошибка внесения: " + ОбъектДрайвера.errorDescription());
Иначе
ВызватьИсключение "Не удалось установить связь с кассовым аппаратом АТОЛ.";
КонецЕсли;
КонецЕсли;
ОбъектДрайвера.close();
Иногда сама конфигурация 1С блокирует проведение чеков возврата, если по данным регистров накопления в кассовой будке нет денег. Чтобы обойти эту блокировку на уровне учетной системы (для баз на обычных формах, таких как Управление торговлей 10.3), выполните следующие действия:
После активации этого права программа 1С может выдать предупреждающее сообщение о расхождении остатка, но проигнорирует ограничение и отправит команду на печать чека возврата в кассовый аппарат. Если в ККТ к этому моменту уже будет отключен контроль наличности (как описано в Способах 1 и 2), чек возврата распечатается без ошибок.