При автоматизации розничной торговли многие компании настраивают автоматическое округление чеков до целого рубля в пользу покупателя. В решениях на платформе 1С это обычно реализуется через механизм автоматических скидок. Однако при определенном сочетании цены, количества и примененных скидок пользователи сталкиваются с тем, что фискальный регистратор аннулирует чек и выдает критическую ошибку. Для оборудования Штрих-М это ошибка «45h: сумма всех типов оплат меньше итога чека», а для устройств Атол — «Неверная цена (сумма)».
В этой статье мы подробно разберем, почему возникает эта математическая коллизия, как требования законодательства влияют на работу кассы и какие практические шаги нужно предпринять для полного устранения проблемы.
---
Давайте проанализируем ситуацию, которая происходит в момент отправки данных из 1С в драйвер фискального регистратора. Проблема кроется в разном подходе к расчету итоговых сумм программным обеспечением 1С и внутренним софтом кассового аппарата.
Рассмотрим конкретный пример:
0,469 кг по цене 774,00 руб. за килограмм.0,469 × 774 = 363,006 руб. (после округления до копеек — 363,01 руб.).1 копейки. Итоговая сумма, которую должен оплатить покупатель, составляет ровно 363,00 руб.0,469, Цена = 774,00, Сумма строки = 363,00.В этот момент драйвер ККТ или сам фискальный накопитель производит жесткую внутреннюю проверку по своей зашитой формуле:
// Внутренний алгоритм проверки ККТ
РасчетнаяСумма = Округлить(Цена * Количество, 2);
Если РасчетнаяСумма <> ПереданнаяСуммаСтроки Тогда
ВызыватьИсключение "Ошибка ФЛК ККТ (ошибка копейки)";
КонецЕсли;
При перемножении переданной цены 774,00 на количество 0,469 кассовый аппарат получает 363,01 руб., тогда как переданная из 1С сумма к оплате равна 363,00 руб. Возникает расхождение в одну копейку. Поскольку сумма оплат (то, что покупатель фактически вносит) оказывается меньше, чем расчетный итог по позициям с точки зрения кассы, фискальный регистратор блокирует операцию и выдает ошибку 45h.
---
Почему раньше эта проблема не стояла так остро, а сейчас кассы массово блокируют чеки? Дело в переходе на новые Форматы фискальных документов (ФФД 1.05 и ФФД 1.2). Налоговая служба ввела жесткий автоматический форматно-логический контроль (ФЛК) на стороне серверов ОФД и ФНС.
Согласно требованиям ФФД, стоимость позиции с учетом всех скидок и наценок должна с точностью до копейки соответствовать формуле умножения цены на количество. Производители кассового оборудования обновили встроенное ПО (прошивки ККТ) и драйверы таким образом, чтобы не допускать отправку в налоговую чеков с некорректной математикой, пресекая ошибку еще на стадии печати.
---
Самым современным, штатным и правильным способом решения проблемы без изменения конфигурации является использование встроенных механизмов Библиотеки подключаемого оборудования (БПО) 1С.
Разберем по шагам, как настроить систему:
Как это работает на практике:
Если 1С видит, что при расчете скидки или округления итоговая сумма строки не делится без остатка на количество, система автоматически разбивает эту товарную позицию на две разные строки в чеке.
Вернемся к нашему примеру. Вместо отправки одной строки с дробными копейками, 1С сформирует и отправит на кассу две записи:
1 шт. по цене 50,02 руб. (Сумма = 50,02 руб.)1 шт. по цене 50,03 руб. (Сумма = 50,03 руб.)В результате общая сумма сойдется идеально (100,05 руб.), а кассовый аппарат без проблем напечатает чек, так как по каждой отдельной строке математическое равенство соблюдено.
---
В более ранних версиях драйверов Штрих-М (например, в линейке 4.9) присутствовали внутренние баги обработки округлений. Практика показывает, что обновление компоненты решает большую часть проблем.
Штрих-М стабильная работа с округлениями началась с версий 4.10.303 / 4.10.305 и выше (в современных реалиях рекомендуется использовать унифицированную линейку драйверов 5.17+).---
Если обновление драйверов выполнено, но ошибка продолжает возникать при оплате картой или наличными, необходимо проверить внутренние таблицы фискального регистратора. Иногда касса пытается самостоятельно повторно пересчитать скидки, присланные из 1С.
Проанализируем порядок действий по исправлению настроек в ККТ:
0. Это запретит кассе применять свои математические алгоритмы поверх данных из 1С.---
Дополнительно рекомендуем обратить внимание на то, как рассчитываются автоматические скидки в справочниках 1С.
Если в настройках скидки процент имеет более двух знаков после запятой (например, рассчитывается динамически как 12.3456%), то на форме документа система покажет округленные две цифры, но в базу запишет и передаст на драйвер точное дробное число. Это также вызывает расхождения при фискализации.
Рекомендуется скорректировать формулы расчета так, чтобы значение СуммаСкидки * 100 / СуммаБезСкидки всегда имело не более двух знаков после запятой.
Применяя указанные методы в комплексе (настройку ФЛК «Разделять строки» в 1С БПО, обновление драйвера и отключение внутренних скидок ККТ в таблицах), мы полностью избавим торговую точку от возникновения «ошибки одной копейки».