При работе с контрольно-кассовой техникой (ККТ) пользователи 1С часто сталкиваются с ситуацией, когда программа не может пробить чек из-за расхождения итоговых сумм. В документе 1С мы видим одну сумму, а фискальный регистратор (ФР) при проверке получает другую, отличающуюся на несколько копеек. Это приводит к ошибке и остановке продажи. Давайте подробно разберемся, почему так происходит и как это исправить.
Проанализируем типичный случай: в документе Чек ККМ есть товарная позиция, где итоговая сумма не равна произведению количества на цену. Например, 1С рассчитала итоговую сумму по строке 14 229,32 руб. при количестве 12 шт. и цене 1 185,78 руб. Фискальный регистратор же перед печатью выполняет проверку: 12 * 1185,78 = 14 229,36 руб. Поскольку 14 229,32 ≠ 14 229,36, печать чека блокируется. Выясним, откуда берется эта разница и как обеспечить корректность данных.
Корень проблемы кроется в механизме применения скидок и наценок в 1С. Часто скидка/наценка рассчитывается и применяется не к цене каждой единицы товара, а к общей сумме по товарной строке. Именно это и приводит к "математическому" несоответствию, которое не пропускает фискальный регистратор.
Рассмотрим по шагам на примере из обсуждения:
ФР получает от 1С итоговую сумму (14 229,32) и количество (12). Согласно требованиям закона 54-ФЗ, в чеке по каждой позиции должны быть указаны "цена за единицу", "количество" и "стоимость", причем должно выполняться равенство: Стоимость = Цена * Количество.
Таким образом, причина ошибки — не сбой в 1С или ККТ (состояние которой поможет проверить программа для тестирования), а разная методология расчета: 1С считает от общей суммы, а ККТ — от цены за единицу, как того требует законодательство.
Существует два основных корректных подхода для решения этой проблемы. Выбор зависит от настроек вашей учетной системы, будь то 1С или автономное рабочее место кассира, и бизнес-процессов.
Это наиболее правильный и "чистый" метод с точки зрения математики и соответствия 54-ФЗ. Суть в том, чтобы изменить логику расчета в 1С так, чтобы скидка или наценка применялась непосредственно к цене за единицу товара, а итоговая сумма строки вычислялась уже после этого.
Рассмотрим по шагам, как выглядел бы расчет в этом случае:
Результат: В 1С и для фискального регистратора все данные будут согласованы. На печать уйдет набор: Цена = 1 185,78, Количество = 12, Сумма = 14 229,36. Равенство Цена * Количество = Сумма выполняется, и чек пробивается без проблем. Для реализации этого может потребоваться изменить настройки видов скидок и наценок в вашей конфигурации 1С, указав, что они должны применяться к цене, а не к сумме строки.
Этот метод используется, когда изменить логику применения скидок в 1С сложно или невозможно (например, из-за устоявшихся бизнес-процессов). В этом случае 1С продолжает считать "по-своему", но перед отправкой данных на фискальный регистратор выполняет специальную подготовку данных, имитируя логику ККТ.
Алгоритм действий на стороне 1С перед печатью чека:
ЦенаДляЧека = Окр(ИтоговаяСумма / Количество, 2).ЦенаДляЧека = Окр(14 229,32 / 12, 2) = 1185,78 руб.СкорректированнаяСумма = ЦенаДляЧека * Количество.СкорректированнаяСумма = 1185,78 * 12 = 14 229,36 руб.Важный момент: этот способ позволяет пробить чек, но приводит к расхождению в несколько копеек между суммой в документе 1С (14 229,32) и фактической суммой, пробитой по кассе (14 229,36). Эту разницу необходимо учитывать. В современных конфигурациях 1С и драйверах ККТ часто уже встроены механизмы, которые выполняют подобную коррекцию автоматически, но если вы сталкиваетесь с ошибкой, возможно, потребуется доработка или дополнительная настройка обработки подключения торгового оборудования.
В итоге, для решения проблемы расхождения сумм необходимо привести данные, передаваемые на ККТ, в соответствие с требованиями 54-ФЗ. Наиболее предпочтительный метод — изначально вести расчеты от цены за единицу товара. Если это невозможно, следует использовать механизм коррекции сумм непосредственно перед печатью чека.