При работе с конфигурацией 1С:Управление торговлей 10.3 (особенно в релизах 10.3.87.x) пользователи часто сталкиваются с неприятной ситуацией: при попытке пробить чек на основании документа Оплата от клиента платежными картами с видом операции «Предоплата», кассовый аппарат аннулирует операцию. На экране или в логах драйвера ККТ появляется сообщение: «Сумма не наличных оплат превышает сумму чека». Это блокирует работу розничной точки и требует оперативного вмешательства технического специалиста.
В этой статье мы подробно разберем, почему возникает эта ошибка, как она связана с изменениями в законодательстве по ФФД 1.2 и какими способами можно восстановить работоспособность системы, даже если вы не планируете обновлять конфигурацию до самого последнего релиза.
Проанализируем ситуацию: касса получает от 1С пакет данных в формате XML. В этом пакете содержатся сведения о товарах (позициях чека) и сведения об оплатах. Ошибка возникает тогда, когда итоговая сумма всех позиций чека оказывается меньше, чем общая сумма, переданная в секцию оплаты безналичными. Даже расхождение в 1 копейку приводит к отказу драйвера регистрировать фискальный документ.
Рассмотрим основные факторы, провоцирующие конфликт:
Несмотря на то, что поддержка УТ 10.3 постепенно сворачивается, фирма «1С» выпустила критически важные обновления. Разберем этот путь подробнее. Ошибка была официально признана и исправлена в релизе 10.3.88.1 и последующих. При работе с несколькими информационными базами для регулярной установки релизов применяется программа для автоматического обновления баз 1С.
В этом обновлении были внесены изменения в общие модули и обработки обслуживания, в частности, в логику формирования XML-пакета для фискализации. Разработчики пересмотрели алгоритм распределения суммы в модуле РаботаСКассойКлиент. Если у вас есть возможность обновиться, это самый безопасный и рекомендуемый способ, так как он учитывает и другие нюансы работы с маркированным товаром и актуальными форматами фискальных данных.
Если ваша конфигурация сильно кастомизирована и обновление невозможно, нам придется внести правки в код вручную. Проанализируем, где именно происходит сбой. Основная задача — гарантировать, что сумма строк всегда равна итогу оплаты. При необходимости можно использовать готовый программный модуль для устранения ошибок округления цен и сумм в чеках.
Рассмотрим пример логики исправления в процедуре, отвечающей за заполнение таблицы товаров для чека (обычно это ЗаполнитьТаблицуТоваровЧека или аналогичные методы в обработках ТОСервер или ОбщиеМодули).
Посмотрим на пример кода, который предотвращает накопление ошибки округления:
// Пример корректировки распределения суммы по строкам
ОстатокОплаты = СуммаДокумента;
КоличествоСтрок = ТаблицаТоваров.Количество();
Для Сч = 1 По КоличествоСтрок Цикл
Строка = ТаблицаТоваров[Сч - 1];
Если Сч = КоличествоСтрок Тогда
// В последнюю строку записываем весь оставшийся «хвост»
Строка.Сумма = ОстатокОплаты;
Иначе
// Рассчитываем пропорциональную сумму
ТекущаяСумма = Округлить(Строка.Цена * Строка.Количество, 2);
// Дополнительная проверка, чтобы не превысить остаток
ТекущаяСумма = Минимум(ТекущаяСумма, ОстатокОплаты);
Строка.Сумма = ТекущаяСумма;
ОстатокОплаты = ОстатокОплаты - ТекущаяСумма;
КонецЕсли;
КонецЦикла;
Применяя такой подход («метод остатка»), мы гарантируем, что сумма по строкам Строка.Сумма в точности совпадет с итогом СуммаДокумента, и драйвер ККТ не вернет ошибку превышения.
Если программный код кажется верным, но ошибка сохраняется, нам нужно проверить, что именно «видит» касса. Проанализируем лог драйвера (например, для АТОЛ это fptr10.log). Найдем в логе секцию формирования чека openReceipt и последующие команды registration и payment.
Обратите внимание на следующие параметры:
Разберем еще один важный момент. При работе с УТ 10.3 и предоплатой важно разделять два этапа:
Если вы пытаетесь пробить предоплату через документ «Оплата от клиента платежными картами», убедитесь, что в настройках торгового оборудования в 1С верно указана версия ФФД. Если касса работает по ФФД 1.2, а 1С пытается отправить данные по старым протоколам 1.05, структура XML может быть некорректной, что приведет к дублированию сумм в глазах драйвера. Для корректной интеграции кассового оборудования по новому стандарту подойдёт обработка обслуживания ККТ Атол с поддержкой ФФД 1.2.
Подводя итог, можно сказать, что проблема носит чисто технический характер и связана с точностью вычислений. Для успешного решения задачи пройдите по следующим шагам:
Во-первых, проверьте версию вашей конфигурации. Если она ниже 10.3.88.1, обновитесь или перенесите код распределения сумм из нового релиза.
Во-вторых, используйте метод «последней строки» для распределения копеек, чтобы итоговая сумма чека всегда сходилась с суммой оплаты до копейки.
В-третьих, всегда проверяйте логи драйвера ККТ. Это единственный способ увидеть реальные цифры, которые уходят на кассу, и понять, на каком этапе (товары, налоги или оплаты) происходит разрыв в 1 копейку.
Совместная проверка программной логики 1С и настроек драйвера ККТ позволит вам устранить ошибку и обеспечить бесперебойную работу кассового узла.