При пробитии кассовых чеков в конфигурациях 1С (например, «1С:Розница», «1С:Управление торговлей», «1С:Комплексная автоматизация») пользователи и кассиры нередко сталкиваются с ситуацией, когда кассовый аппарат аннулирует фискальный документ. На чековой ленте или в окне программы появляется сообщение: «Чек аннулирован. Чек оплачен не полностью». При детальном анализе оказывается, что сумма позиций чека отличается от суммы внесенной оплаты всего на 1 копейку (0.01 рубля) из-за автоматически добавленной надбавки или разбиения строки на части.
Разберем причины возникновения этой ошибки, выясним логику работы форматно-логического контроля в 1С и рассмотрим по шагам методы устранения нестыковок в суммах.
Проанализируем ситуацию: требования форматов фискальных документов (ФФД) накладывают жесткие математические ограничения на данные кассового чека. Сумма всех товарных позиций обязана строго равняться сумме всех типов оплат (наличные, безналичные), а стоимость конкретной позиции должна подчиняться правилу: Сумма = Округлить(Цена * Количество - Скидка, 2).
Расхождение в 1 копейку обычно возникает в следующих случаях:
ПровестиФорматоЛогическийКонтроль() перед отправкой фискального пакета проверяет соответствие произведения цены на количество сумме строки. Если равенство с точностью до копеек не сходится, алгоритм искусственно дробит одну позицию на две (одна часть по базовой цене, вторая — с надбавкой в 1 копейку), что может приводить к превышению итоговой суммы чека над суммой принятой оплаты.Рассмотрим, как настроить встроенный контроль 1С. В справочнике подключаемого оборудования для каждого экземпляра ККТ предусмотрен специальный реквизит, управляющий строгостью проверки математики чека перед отправкой команды на печать.
ДопустимоеРасхождениеФЛК).0.01 или больше, в зависимости от применяемых скидок и алгоритмов округления цен).При корректно заданном допустимом расхождении алгоритм 1С не будет разбивать строки на искусственные надбавки, а распределит допустимую математическую погрешность в скидку одной из строк с наибольшей суммой.
Если копейка расхождения появляется именно на этапе вычисления налоговых ставок, необходимо передавать в кассу уже рассчитанные суммы НДС и запретить фискальному регистратору производить собственный пересчет от общего итога.
Разберем порядок действий для распространенных моделей ККТ:
Запустим утилиту Тест драйвера ККТ, перейдем в Свойства → Параметры ККТ. В разделе налоговых ставок и округлений выставим режим, при котором суммы налогов и скидок берутся исключительно из фискального пакета XML/JSON, сформированного учетной программой, без автоматического вычисления надбавок драйвером.
Откроем Тест драйвера FR, установим связь с кассой и перейдем в раздел Таблицы. Откроем Таблицу 17 (Настройки). Проверим параметры округления, печати налогов и распределения скидок. Отключим построчный автоматический пересчет НДС ядром фискального регистратора, оставив прием готовых сумм из входящего потока данных 1С.
Если используется нетиповая конфигурация или устаревшая версия Библиотеки подключаемого оборудования (БПО), где алгоритм ФЛК работает некорректно, можно выполнить доработку через расширение конфигурации.
Посмотрим на пример выравнивания копеечных погрешностей в процедуре формирования фискального пакета перед вызовом метода печати:
// Проверяем сходимость суммы позиций и суммы оплат чека
СуммаПозиций = 0;
Для Каждого СтрПозиция Из ПакетЧека.Позиции Цикл
СуммаПозиций = СуммаПозиций + СтрПозиция.Сумма;
КонецЦикла;
СуммаОплат = 0;
Для Каждого СтрОплата Из ПакетЧека.Оплаты Цикл
СуммаОплат = СуммаОплат + СтрОплата.Сумма;
КонецЦикла;
Разница = СуммаПозиций - СуммаОплат;
// Если расхождение составляет не более 1-2 копеек, корректируем строку с наибольшей суммой
Если Абс(Разница) > 0 И Абс(Разница) <= 0.02 Тогда
ИндексМакс = 0;
МаксСумма = 0;
Для Индекс = 0 По ПакетЧека.Позиции.Количество() - 1 Цикл
Если ПакетЧека.Позиции[Индекс].Сумма > МаксСумма Тогда
МаксСумма = ПакетЧека.Позиции[Индекс].Сумма;
ИндексМакс = Индекс;
КонецЕсли;
КонецЦикла;
ПакетЧека.Позиции[ИндексМакс].Сумма = ПакетЧека.Позиции[ИндексМакс].Сумма - Разница;
КонецЕсли;
Такой подход гарантирует, что итоговая сумма строк чека (тег 1043) всегда будет строго равна сумме оплат (тег 1020), что исключит блокировку фискализации со стороны драйвера кассового аппарата.
В розничной торговле наиболее удобным и легальным способом борьбы с копеечными долями при весовом товаре является настройка автоматического округления чека за счет скидки.
1 рубля или до 10 копеек.