При работе с торговым оборудованием в 1С, особенно в конфигурациях на обычных формах, таких как 1С:Комплексная автоматизация 1.1 или 1С:Управление производственным предприятием 1.3, пользователи часто сталкиваются с ситуацией, когда невозможно пробить чек на возврат. Система выдает служебное сообщение: "В ККМ нет денег для выплаты". При этом в самой программе 1С остаток по кассе может быть положительным и достаточным для совершения операции.
Рассмотрим детально, почему возникает этот программно-аппаратный диссонанс и какими способами можно восстановить работоспособность точки продаж.
Для начала проанализируем, как устроена работа с денежными средствами в конфигурации КА 1.1. В системе существуют два принципиально разных объекта для учета наличности:
Проблема кроется в том, что современное кассовое оборудование (ККТ с передачей данных) имеет собственные внутренние счетчики наличности. Когда вы закрываете смену (снимаете Z-отчет), во многих моделях (например, АТОЛ) по умолчанию срабатывает настройка "Автоматическая инкассация". Это означает, что в момент закрытия смены внутренний счетчик наличности в памяти кассового аппарата обнуляется, хотя физически деньги могут оставаться в денежном ящике.
В 1С же ситуация иная: если не был оформлен документ Приходный кассовый ордер с видом операции "Прием розничной выручки", деньги продолжают "висеть" на остатках Кассы ККМ. Но при попытке пробить возврат, драйвер ККТ опрашивает именно внутренний счетчик аппарата. Видя там "0", касса блокирует фискальную операцию, защищая владельца от выдачи сумм, которых якобы нет в ящике.
Это самый оперативный метод, позволяющий пробить чек "здесь и сейчас". Нам необходимо синхронизировать физическое наличие денег в ККТ с данными учетной системы. Разберем по шагам, как это сделать в КА 1.1.
В типовой конфигурации документ Расходный кассовый ордер с видом операции "Выдача денежных средств в кассу ККМ" делает движения по регистрам 1С (уменьшает остаток в основной кассе и увеличивает в розничной), но часто он не передает команду на физическое внесение в драйвер кассы. Чтобы сумма появилась в памяти ККТ, нужно выполнить специальную технологическую операцию.
Проанализируем алгоритм действий:
РКО на передачу нужной суммы в Кассу ККМ. Это выровняет учет в 1С.Важный нюанс: Если в вашей версии интерфейса кнопки "Внесение" нет, программисты часто используют внешние обработки, которые вызывают метод драйвера Vnesenie(). В коде это выглядит примерно так:
// Пример логики вызова драйвера для внесения
Результат = ОбъектДрайвера.ВнестиДенежныеСредства(КассаПараметры, СуммаВнесения);
Если Не Результат Тогда
Сообщить("Ошибка при внесении в ККМ: " + ОбъектДрайвера.ОписаниеОшибки);
КонецЕсли;
Если возвраты происходят часто (например, вы работаете с оптовыми покупателями или возвратами по эквайрингу), процедура постоянного внесения может быть утомительной. Рассмотрим, как изменить поведение самого аппарата. Большинство современных касс АТОЛ позволяют отключить контроль остатка.
Для этого выполним следующие действия:
Внимание: Отключение автоматической инкассации приведет к тому, что сумма в кассе ККТ будет накапливаться изо дня в день. Вам придется делать "Выемку" вручную, когда вы фактически забираете деньги из ящика в основную кассу предприятия. Зато утром следующего дня в кассе уже будут "виртуальные" деньги для совершения возвратов.
Проанализируем ситуацию с безналичными расчетами. Часто касса выдает ошибку "нет денег", даже если вы возвращаете средства на карту покупателя (эквайринг). С точки зрения логики это кажется странным, ведь наличные не выдаются. Однако старые прошивки и драйверы могут проверять общий "денежный ящик" перед любой операцией возврата.
Если вы столкнулись с этим:
В сообщении 10 темы автор упоминает расхождение между ОСВ по 50 счету и "Ведомостью по денежным средствам". Это происходит из-за того, что в 1С:КА 1.1 при перемещении денег в Кассу ККМ сумма уходит из регистра Денежные средства и попадает в регистр Денежные средства в розничных точках.
Чтобы избежать путаницы, помните:
РКО на возврат напрямую покупателю (оптовая схема), то убедитесь, что этот документ корректно связан с фискальным регистратором. В оптовой торговле (где нет документа Чек ККМ) 1С часто просто посылает команду печати чека из РКО, не затрагивая регистры розницы. В этом случае "Внесение" через драйвер — единственный технический выход.Проанализировав все способы, выделим оптимальный план решения проблемы:
Денежные средства в розничных точках. Помните, что физическая команда "Внесение" в драйвер и документ РКО в 1С — это две разные операции, которые должны выполняться в паре для сохранения порядка в учете.Использование внешней обработки для управления наличностью в ККТ — самый надежный путь для пользователей старых конфигураций, так как типовые механизмы 1С v8.3 на обычных формах не всегда учитывают жесткие требования современных онлайн-касс к остатку наличности в счетчиках.