При работе с торговым оборудованием в решениях от «1С-Рарус» (в частности, в отраслевом решении «Альфа-Авто») кассиры могут столкнуться со сбоем при попытке закрыть кассовую смену. Процесс прерывается, а на экран выводится критическая ошибка фискального регистратора: «Неверная цена (сумма)». В актуальных версиях драйверов АТОЛ (ДТО 10) эта же ошибка может сопровождаться кодом 16 (LIBFPTR_ERROR_INVALID_SUM).
Особенно часто эта ситуация возникает в дни, когда торговая активность была минимальной: например, если за всю смену была совершена всего одна продажа и один возврат на точно такую же сумму. Давайте подробно разберем, почему возникает этот сбой, как логика кассового аппарата конфликтует с алгоритмами «1С» и какими способами можно быстро решить проблему.
Для начала проанализируем физический смысл происходящего. Ошибка драйвера ККТ «Неверная цена (сумма)» — это защитная реакция фискального накопителя и самого аппарата на попытку передать некорректные финансовые параметры. Это происходит в следующих случаях:
В контексте закрытия смены в «Альфа-Авто» виновником почти всегда становится операция автоматической инкассации (изъятия денег) с нулевой суммой. Разберем этот механизм по шагам:
0.00 рублей), «1С» пытается отправить на ККТ команду выплаты с нулевым параметром.Рассмотрим подробнее способы устранения этой проблемы — от простых настроек в пользовательском интерфейсе до корректировки параметров самого кассового аппарата.
Самый простой и логичный способ избежать программных коллизий — запретить системе «1С» автоматически отправлять команду изъятия денег при закрытии смены. Если у вас нет жесткой необходимости обнулять кассу ККТ программным документом «Инкассация» из «1С», выполните следующие настройки:
После этого «1С» при закрытии смены будет посылать на ККТ исключительно команду снятия Z-отчета. Процедура будет проходить гладко даже при нулевом балансе за день.
Если бизнес-процесс требует, чтобы наличные в кассовом аппарате обнулялись при закрытии смены, но «1С» при этом выдает ошибку, мы можем переложить задачу обнуления на внутреннюю логику самого фискального регистратора. Для этого настроим параметры ККТ через драйвер:
При такой настройке кассовый аппарат АТОЛ будет самостоятельно обнулять свой денежный регистр в момент печати Z-отчета. Программе «1С» больше не потребуется отправлять отдельную команду выплаты с нулевой суммой, и конфликт будет исчерпан.
Если вы временно не можете изменить настройки программы или драйвера (например, из-за отсутствия прав администратора), можно применить простое организационное решение.
Порекомендуем кассирам внедрить в ежедневную практику операцию внесения разменного фонда в начале рабочего дня. Даже если внести минимальную сумму (например, 100 рублей), это решит проблему:
Если вы являетесь программистом 1С и сопровождаете данную конфигурацию, имеет смысл добавить проверку непосредственно в код обработки обслуживания торгового оборудования. Это полностью исключит влияние человеческого фактора.
Проанализируем фрагмент кода, где вызывается функция инкассации перед закрытием смены. Нам необходимо принудительно блокировать отправку команды выплаты на ККТ, если расчетная сумма изъятия равна нулю. Сделать это можно следующим образом:
СуммаИнкассации = ВычислитьСуммуОстаткаВКассеККМ();
Если СуммаИнкассации <= 0 Тогда
// Записываем документ в информационной базе чисто информативно
ДокументИнкассация.Записать(РежимЗаписиДокумента.Проведение);
ЗаписатьВЛог("Выплата на ККТ пропущена, так как сумма равна или меньше нуля.");
Иначе
// Вызываем стандартную процедуру интеграционной библиотеки для печати чека выплаты
ПараметрыВыплаты = ПолучитьПараметрыВыплаты(СуммаИнкассации);
Результат = ТорговоеОборудованиеВыполнитьОперацию("Выплата", ПараметрыВыплаты);
КонецЕсли;
Такой несложный алгоритм предотвратит передачу нулевых параметров в «Сервер защиты и управления оборудованием» Рарус или напрямую в драйвер ККТ, сохранив при этом корректный документооборот в самой базе данных 1С.
Стоит отметить, что эта же ошибка может возникать не только при закрытии смены, но и при попытке пробить обычный чек продажи. Если это ваш случай, то дело не в инкассации, а в округлении копеек при распределении скидки.
Современные форматы фискальных данных (ФФД 1.05 и ФФД 1.2) жестко контролируют математическое равенство в каждой строке чека:
Цена со скидкой * Количество = Сумма строки
Если «1С:Альфа-Авто» при расчете сложной построчной скидки передает в драйвер цену и сумму, которые расходятся хотя бы на одну копейку из-за математического округления, кассовое ядро АТОЛ отвергнет этот чек с ошибкой «Неверная цена (сумма)». Для решения этой проблемы рекомендуется обновить релиз конфигурации (разработчики «1С-Рарус» исправили алгоритмы распределения скидок в новых версиях обработок обслуживания ККТ) либо скорректировать правила округления в настройках учетной политики «1С».