Как исправить ошибку ККТ АТОЛ «Неверная цена (сумма)» при закрытии смены в Альфа-Авто?

Системный администратор Управленческий учет Торговля и дистрибуция
← На главную

При работе с торговым оборудованием в решениях от «1С-Рарус» (в частности, в отраслевом решении «Альфа-Авто») кассиры могут столкнуться со сбоем при попытке закрыть кассовую смену. Процесс прерывается, а на экран выводится критическая ошибка фискального регистратора: «Неверная цена (сумма)». В актуальных версиях драйверов АТОЛ (ДТО 10) эта же ошибка может сопровождаться кодом 16 (LIBFPTR_ERROR_INVALID_SUM).

Особенно часто эта ситуация возникает в дни, когда торговая активность была минимальной: например, если за всю смену была совершена всего одна продажа и один возврат на точно такую же сумму. Давайте подробно разберем, почему возникает этот сбой, как логика кассового аппарата конфликтует с алгоритмами «1С» и какими способами можно быстро решить проблему.

Выясняем причину ошибки ККТ

Для начала проанализируем физический смысл происходящего. Ошибка драйвера ККТ «Неверная цена (сумма)» — это защитная реакция фискального накопителя и самого аппарата на попытку передать некорректные финансовые параметры. Это происходит в следующих случаях:

  1. Передача нулевой или отрицательной суммы в операциях регистрации позиции, внесения или выплаты денег.
  2. Передача суммы выплаты (инкассации), превышающей фактическое количество наличных денег в денежном ящике по учету ККТ.
  3. Математическое расхождение при округлении скидок, когда сумма строк чека не сходится с итогом.

В контексте закрытия смены в «Альфа-Авто» виновником почти всегда становится операция автоматической инкассации (изъятия денег) с нулевой суммой. Разберем этот механизм по шагам:

  1. В течение смены кассир пробивает чек продажи на 1000 рублей, а затем оформляет чек возврата на те же 1000 рублей. Физический остаток наличности в кассе равен нулю.
  2. При выполнении обработки «Закрытие кассовой смены» система «1С:Альфа-Авто» автоматически формирует документ «Инкассация» (изъятие из кассы ККМ).
  3. Программа рассчитывает сумму изъятия как разницу между приходом и расходом. Получив нулевое значение (0.00 рублей), «1С» пытается отправить на ККТ команду выплаты с нулевым параметром.
  4. Драйвер АТОЛ блокирует некорректную команду с нулевой суммой и возвращает ошибку «Неверная цена (сумма)», прерывая процесс закрытия смены в программе.

Рассмотрим подробнее способы устранения этой проблемы — от простых настроек в пользовательском интерфейсе до корректировки параметров самого кассового аппарата.

Решение 1. Отключение автоматической инкассации в настройках «1С»

Самый простой и логичный способ избежать программных коллизий — запретить системе «1С» автоматически отправлять команду изъятия денег при закрытии смены. Если у вас нет жесткой необходимости обнулять кассу ККТ программным документом «Инкассация» из «1С», выполните следующие настройки:

  1. Перейдем в раздел настроек прав и параметров системы (в зависимости от релиза «Альфа-Авто» это могут быть «Права и настройки» пользователя или параметры подразделения).
  2. Найдем параметр, отвечающий за финансовые операции при закрытии смены. Обычно он называется «Производить инкассацию перед закрытием смены».
  3. Снимем флаг (установим значение в «Ложь»).
  4. Сохраним изменения.

После этого «1С» при закрытии смены будет посылать на ККТ исключительно команду снятия Z-отчета. Процедура будет проходить гладко даже при нулевом балансе за день.

Решение 2. Настройка автоматического обнуления в самом аппарате АТОЛ

Если бизнес-процесс требует, чтобы наличные в кассовом аппарате обнулялись при закрытии смены, но «1С» при этом выдает ошибку, мы можем переложить задачу обнуления на внутреннюю логику самого фискального регистратора. Для этого настроим параметры ККТ через драйвер:

  1. Закроем программу «1С», чтобы освободить порт подключения к кассе.
  2. Запустим утилиту «Тест драйвера ККТ» (версии 10.х).
  3. Установим флаг «Включено» в правом верхнем углу для связи с аппаратом.
  4. Перейдем в раздел «Свойства», затем нажмем кнопку «Параметры ККТ».
  5. В открывшемся дереве настроек найдем раздел «Правила» (в некоторых прошивках он может называться «Основные» или «Работа с ККТ»).
  6. Найдем параметр «Автоматическое обнуление наличности при закрытии смены» (или «Автовыплата») и установим его значение в положение «Включено».
  7. Нажмем кнопку «Сохранить и записать».

При такой настройке кассовый аппарат АТОЛ будет самостоятельно обнулять свой денежный регистр в момент печати Z-отчета. Программе «1С» больше не потребуется отправлять отдельную команду выплаты с нулевой суммой, и конфликт будет исчерпан.

Решение 3. Организационный обход (внесение разменной монеты)

Если вы временно не можете изменить настройки программы или драйвера (например, из-за отсутствия прав администратора), можно применить простое организационное решение.

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

  1. При открытии смены кассир выполняет операцию «Внесение» на сумму 100 рублей.
  2. В конце смены, даже при равенстве продаж и возвратов, итоговый баланс наличных в кассе составит 100 рублей (а не 0).
  3. Программа «1С» успешно сформирует документ инкассации на сумму 100 рублей. Команда выплаты будет содержать положительное число, и драйвер АТОЛ проведет операцию без ошибок.

Решение 4. Корректировка кода «1С» для разработчиков

Если вы являетесь программистом 1С и сопровождаете данную конфигурацию, имеет смысл добавить проверку непосредственно в код обработки обслуживания торгового оборудования. Это полностью исключит влияние человеческого фактора.

Проанализируем фрагмент кода, где вызывается функция инкассации перед закрытием смены. Нам необходимо принудительно блокировать отправку команды выплаты на ККТ, если расчетная сумма изъятия равна нулю. Сделать это можно следующим образом:


СуммаИнкассации = ВычислитьСуммуОстаткаВКассеККМ();

Если СуммаИнкассации <= 0 Тогда
    // Записываем документ в информационной базе чисто информативно
    ДокументИнкассация.Записать(РежимЗаписиДокумента.Проведение);
    ЗаписатьВЛог("Выплата на ККТ пропущена, так как сумма равна или меньше нуля.");
Иначе
    // Вызываем стандартную процедуру интеграционной библиотеки для печати чека выплаты
    ПараметрыВыплаты = ПолучитьПараметрыВыплаты(СуммаИнкассации);
    Результат = ТорговоеОборудованиеВыполнитьОперацию("Выплата", ПараметрыВыплаты);
КонецЕсли;

Такой несложный алгоритм предотвратит передачу нулевых параметров в «Сервер защиты и управления оборудованием» Рарус или напрямую в драйвер ККТ, сохранив при этом корректный документооборот в самой базе данных 1С.

Дополнительно: Ошибка «Неверная цена (сумма)» при продаже со скидками

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

Современные форматы фискальных данных (ФФД 1.05 и ФФД 1.2) жестко контролируют математическое равенство в каждой строке чека:

Цена со скидкой * Количество = Сумма строки

Если «1С:Альфа-Авто» при расчете сложной построчной скидки передает в драйвер цену и сумму, которые расходятся хотя бы на одну копейку из-за математического округления, кассовое ядро АТОЛ отвергнет этот чек с ошибкой «Неверная цена (сумма)». Для решения этой проблемы рекомендуется обновить релиз конфигурации (разработчики «1С-Рарус» исправили алгоритмы распределения скидок в новых версиях обработок обслуживания ККТ) либо скорректировать правила округления в настройках учетной политики «1С».

← На главную