При работе с конфигурациями 1С старого поколения, такими как Управление производственным предприятием (УПП) или Комплексная автоматизация 1.1, пользователи часто сталкиваются с техническими сложностями при оформлении частичных оплат через онлайн-кассы (ФЗ-54). Одной из наиболее запутанных ситуаций является аннулирование чека кассой Атол с диагностическим сообщением драйвера: «Сумма безналичной оплаты больше суммы чека». При этом фактически оплата принимается наличными, и сумма документа явно меньше общей суммы заказа.
В этой статье мы подробно разберем, почему возникает этот конфликт между 1С и драйвером ККТ, проанализируем внутренние механизмы распределения сумм и найдем практические способы решения проблемы.
Ситуация, когда 1С сообщает о «безналичной оплате», которой не было, обычно связана с тем, как программный код подготавливает XML-пакет данных для передачи в драйвер кассы. Выясним основные причины:
Предоплата частичная. Если логика конфигурации пытается передать полный состав заказа, но не указывает верно суммы кредита (передачи в долг остатка стоимости), касса блокирует операцию.Проанализируем опыт практикующих специалистов. Часто в 1С:УПП механизм распределения суммы по строкам Заказа покупателя работает нестабильно. Чтобы избежать математических ошибок распределения, можно использовать методику «сводного» чека.
Вместо того чтобы печатать в чеке все 50 позиций из заказа с мизерными долями цен, бухгалтеры создают в справочнике Номенклатура специальную позицию с типом «Услуга» и наименованием, например, «Частичная предоплата по заказу №...».
Рассмотрим алгоритм действий:
Приходный кассовый ордер (ПКО) или Оплата от покупателя платежной картой выбирается не весь заказ, а конкретная номенклатура-заменитель.Предоплата частичная или Аванс.Это позволяет избежать распределения копеек по всему списку товаров и исключает вероятность появления паразитных сумм в тегах безналичной оплаты.
Если вы решили разобраться в проблеме на программном уровне, необходимо проанализировать, какие данные 1С отправляет в драйвер ККТ. Посмотрим на структуру формирования данных. В УПП за это часто отвечает обработка обслуживания или модуль МенеджерОборудованияУниверсальный.
Проанализируем ситуацию: касса считает, что идет безналичная оплата. Это значит, что в структуру ТаблицаОплат попадает значение не в тот индекс. Обычно индексы распределяются так:
Необходимо проверить процедуру ПодготовитьДанныеДляЧека в модуле интеграции. Пример кода, на который стоит обратить внимание при отладке:
// Пример проверки заполнения таблицы оплат
Для Каждого СтрокаОплаты Из ПараметрыЧека.ТаблицаОплат Цикл
Если СтрокаОплаты.ТипОплаты = 0 Тогда
// Проверяем, что здесь именно наличные
ЗаписатьВЛог("Сумма наличных: " + СтрокаОплаты.Сумма);
КонецЕсли;
// Если здесь появляется сумма, когда её не должно быть - это причина ошибки
Если СтрокаОплаты.ТипОплаты = 1 Тогда
ЗаписатьВЛог("ВНИМАНИЕ: Ошибка распределения в безнал: " + СтрокаОплаты.Сумма);
КонецЕсли;
КонецЦикла;
Выясним причину: если вы используете драйвер Атол версии 10.х со старой обработкой 1С, предназначенной для 8-й версии, маппинг (соответствие) типов оплат может быть сдвинут.
Если законодательство позволяет (зависит от того, определен ли список товаров в момент оплаты), попробуйте сменить признак способа расчета с Предоплата частичная на Аванс.
Разберем, почему это помогает:
При Авансе кассовый аппарат не требует детального перечисления товарных позиций с их ценами и количеством. В драйвер передается общая сумма аванса одной строкой. Это полностью снимает проблему «лишних копеек» и некорректного заполнения тегов безналичной оплаты, так как математическая модель чека становится максимально простой: одна позиция = одна оплата.
Чтобы окончательно убедиться в причинах ошибки, рекомендуем выполнить следующие шаги:
CashSum и ElectronSum (или аналогичные для вашей версии ФФД). Если в ElectronSum стоит значение отличное от нуля при оплате наличными — проблему нужно искать в коде 1С.Подключаемое оборудование, откройте параметры вашей кассы и проверьте таблицу «Типы оплаты». Убедитесь, что «Наличные» соответствуют типу 0.Таким образом, ошибка «Сумма безналичной оплаты больше суммы чека» является следствием некорректной подготовки данных в 1С, когда из-за математических ошибок или неверных настроек часть суммы «утекает» в тег электронных платежей. Использование сводной номенклатуры или корректировка признаков способа расчета — наиболее быстрые и эффективные способы решения данной проблемы.