При работе с онлайн-кассами в программе 1С:Управление торговлей (в частности, на стыке переходов версий 11.3 и 11.4) пользователи часто сталкиваются с неприятной ситуацией. Продажа по безналичному расчету (оплата картой) проходит успешно, но при попытке сделать возврат день в день через рабочее место кассира (РМК) система выдает ошибку: «В ККТ нет денег для выплаты» или «Не могу пробить чек, в ККМ нет денег». При этом возвраты наличных средств выполняются без каких-либо затруднений.
В этой статье мы подробно разберем, почему возникает данная ошибка, проанализируем внутренние механизмы взаимодействия программы 1С и кассовых аппаратов, а также рассмотрим несколько практических способов решения этой проблемы.
Казалось бы, операция возврата безналичных средств не должна зависеть от количества бумажных денег в кассовом ящике. Однако физический фискальный регистратор (например, популярные модели АТОЛ) работает по своей внутренней логике, заложенной разработчиками оборудования.
По умолчанию во многих прошивках ККТ включена опция контроля наличности в денежном ящике. Кассовый аппарат воспринимает любую операцию с признаком расчета «Возврат прихода» как расходную транзакцию. При выполнении расхода ККТ автоматически пытается уменьшить текущий виртуальный счетчик наличных денег в своей памяти.
Если на момент оформления возврата этот счетчик равен нулю (например, смена только открылась, или в течение дня не было продаж за наличный расчет), ККТ блокирует операцию, выдавая ошибку нехватки средств. В старых версиях интеграционной библиотеки 1С:Управление торговлей 11.3 программа не передавала в драйвер ККТ специальный признак, указывающий на то, что это электронный (безналичный) расчет, для которого проверку баланса денежного ящика выполнять не требуется. Из-за этого касса продолжала жестко контролировать наличие бумажных денег.
Рассмотрим по шагам несколько эффективных способов решения этой проблемы: от фундаментальной настройки оборудования до оперативных обходных путей для кассира.
Самым надежным решением является изменение внутренних настроек самого кассового аппарата через системную утилиту драйвера. Это заставит кассу игнорировать проверку баланса при любых расходных операциях.
Выполним настройку по шагам:
1С:Управление торговлей на компьютере. Это необходимо для того, чтобы освободить порт подключения (COM-порт или USB), иначе драйвер не сможет связаться с кассой.После проведения данной настройки касса перестанет блокировать операции возврата по картам и СБП даже при нулевом балансе в денежном ящике.
Если на торговой точке периодически проходят продажи за наличные, но ошибка все равно возникает утром (до первой наличной продажи), дело может быть в автоматическом обнулении денежного ящика.
При закрытии смены (снятии Z-отчета) касса может автоматически проводить инкассацию, полностью списывая виртуальный остаток наличных. Чтобы накопленные наличные деньги переходили на следующую смену и выступали «страховкой» для проведения возвратов, эту опцию можно отключить:
Важное примечание: данный метод будет бесполезен для магазинов и шоурумов, которые работают исключительно по безналичному расчету и не принимают физические купюры.
Что делать, если у кассира нет прав администратора для запуска теста драйвера ККТ, а оформить возврат клиенту нужно прямо сейчас? Проблему нехватки виртуальных денег можно обойти вручную непосредственно из интерфейса 1С.
Разберем последовательность действий совместной работы кассира:
Если мы проанализируем код интеграционных библиотек 1С, то увидим, что в старых релизах параметры электронных способов оплаты передавались кассе некорректно. В современных версиях 1С:Управление торговлей 11.4 и выше разработчики исправили этот недостаток.
Программный код современных обработок обслуживания ККТ при формировании чека возврата передает явную команду драйверу, которая выглядит следующим образом:
// Фрагмент кода интеграционной библиотеки 1С для работы с ККТ
ПараметрыЧека = Новый Соответствие;
ПараметрыЧека.Вставить("ТипОплаты", Перечисления.ТипыОплатыККТ.Электронно);
ПараметрыЧека.Вставить("Сумма", СуммаВозврата);
Драйвер.СформироватьЧекВозврата(ПараметрыЧека);
При передаче параметра Электронно современные версии драйвера АТОЛ автоматически отключают внутренний контроль наличности в кассовом аппарате именно для этой конкретной транзакции. Для долгосрочного решения проблемы без вмешательства в настройки железа рекомендуется обновить конфигурацию 1С до актуального релиза и установить последнюю сертифицированную версию драйвера кассы.