Как исправить ошибку 45h: Сумма всех типов оплаты меньше итога чека в 1С:Розница при работе с кассами Штрих-М?

Системный администратор 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с фискальными регистраторами семейства Штрих-М (включая популярные модели ЭЛВЕС-ФР-Ф) пользователи часто сталкиваются с критической ошибкой: «При выполнении операции произошла ошибка: 45h, Сумма всех типов оплаты меньше итога чека». Данная ситуация особенно характерна для чеков, в которых применяются автоматические или ручные скидки. В этой статье мы подробно разберем причины возникновения этой ошибки и пошагово пройдем путь от диагностики до полного устранения проблемы.

Выясним причину: почему возникает ошибка 45h?

Проанализируем механику взаимодействия 1С и кассового аппарата. Ошибка 45h — это типичная «проблема копейки», возникающая из-за разницы в алгоритмах округления. Рассмотрим ситуацию: 1С рассчитывает скидку на весь документ и распределяет ее по позициям. В результате деления могут возникнуть длинные дробные части, которые программа округляет до двух знаков.

В то же время фискальный регистратор (ККТ) производит собственные вычисления суммы строки по формуле Цена * Количество. Если итоговая сумма, которую 1С передает как «Оплату», оказывается хотя бы на одну копейку меньше, чем сумма, которую ККТ насчитала по позициям, касса блокирует операцию. С точки зрения кассового аппарата, клиент вносит меньше денег, чем стоит товар, что недопустимо по закону.

Основные факторы, провоцирующие ошибку:

  1. Использование устаревших версий конфигурации (например, Розница 2.1), которые некорректно работают с ФФД 1.05.
  2. Несоответствие версии драйвера ККТ и версии Библиотеки подключаемого оборудования (БПО) в 1С.
  3. Неправильная настройка округления в настройках магазина или в таблицах самого кассового аппарата.

Шаг 1. Обновление конфигурации и платформы

Как показывает практика, попытки «подружить» старую Розницу 2.1 с новыми прошивками ККТ под ФФД 1.05 через старые драйверы часто заходят в тупик. Рассмотрим правильный алгоритм обновления системы:

Во-первых, необходимо обновить 1С:Розница до редакции 2.2 или выше. В базовых версиях это делается через стандартный механизм обновления конфигурации. Во-вторых, обратим внимание на платформу. Для корректной работы драйверов Штрих-М крайне рекомендуется использовать 32-битную (x86) версию платформы 1С:Предприятие, даже если ваша операционная система 64-битная. Это связано с тем, что большинство интеграционных компонентов Штрих-М до сих пор являются 32-битными.

После обновления платформы (например, до версии 8.3.13 и выше), убедитесь, что в системе установлена актуальная версия драйвера «ШТРИХ-М: Драйвер ККТ 4.14» или выше.

Шаг 2. Корректная установка интеграционной компоненты

Часто ошибка возникает из-за того, что 1С использует встроенный драйвер, который не совпадает с установленным в системе. Разберем процесс ручной установки компоненты:

  1. Перейдем в папку, куда установлен основной драйвер Штрих-М (обычно это C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin\1C).
  2. Найдем там zip-архивы, например, shtrih-m_24.zip. Это и есть актуальные компоненты для интеграции.
  3. В 1С откроем раздел «Подключение и настройка оборудования» -> «Драйверы оборудования».
  4. Нажмем «Добавить новый драйвер из файла» и выберем наш zip-архив.

После этого статус драйвера должен смениться на «Установлен». Это гарантирует, что 1С будет общаться с кассой на «одном языке».

Шаг 3. Настройка параметров подключения (RNDIS и TCP)

Для современных моделей, таких как ЭЛВЕС-ФР-Ф, подключение часто идет через интерфейс RNDIS. Проанализируем настройки связи в 1С:

В настройках оборудования выберем тип драйвера «Штрих-М: ККТ с передачей данных в ОФД 54-ФЗ». В параметрах подключения установим следующие значения:

Важный совет: В настройках драйвера обязательно увеличьте Тайм-аут до 2000-3000 мс. При расчете сложных скидок бюджетные процессоры касс (особенно ЭЛВЕС) могут долго обрабатывать данные, и 1С может разорвать соединение раньше времени, что приведет к ошибке передачи чека.

Шаг 4. Настройка округления и логики скидок

Чтобы избежать расхождения в копейках, мы должны заставить 1С и кассу работать с целыми числами или одинаково округлять дробные. Рассмотрим, как это реализовать:

В 1С:Розница перейдем в «НСИ» -> «Магазины». В карточке магазина найдем настройки округления. Установим «Порядок округления суммы чека в пользу покупателя» до 1 рубля или хотя бы до 0.5 рубля. Это «отсечет» проблемные копейки на уровне документа 1С до того, как они попадут в ККТ.

Также проанализируем способ передачи скидки. Существует два подхода:

  1. Передача цены и суммы скидки отдельно.
  2. Передача чистой цены (уже со скидкой).

Второй вариант является наиболее стабильным для устранения ошибки 45h. В программном коде или настройках БПО это соответствует методу, когда в поле Цена передается фактически оплачиваемая сумма за единицу товара. Если вы используете типовую конфигурацию, убедитесь, что в настройках драйвера ККТ в 1С не стоит галочка «Печатать скидки», если это поддерживается вашей версией БПО — это заставит систему передавать чистые цены.

Шаг 5. Проверка таблиц ККТ

Если программные настройки 1С не помогают, обратимся к внутренним настройкам самого аппарата через «Тест драйвера ККТ». Разберем важные параметры в таблицах:

  1. Зайдем в «Настройка свойств» -> «Таблицы».
  2. Таблица 1 (Тип текста), ряд 1, поле 40: Округление. Попробуйте изменить значение этого поля (в зависимости от прошивки, это может включать внутреннее округление ККТ).
  3. Таблица 17 (Региональные настройки): Проверьте параметры вычисления налогов. Иногда налоги, рассчитываемые «сверху», также могут давать погрешность в копейку.

Важное замечание: Любые изменения в таблицах ККТ рекомендуется делать при закрытой смене.

Пример программной подготовки данных (для разработчиков)

Если вы столкнулись с этой проблемой в самописной конфигурации, рассмотрим пример кода, который подготавливает данные для передачи в БПО так, чтобы избежать расхождений. Главная задача — самостоятельно рассчитать итоговую цену позиции так, чтобы Цена * Количество строго равнялось сумме к оплате:


// Пример нормализации суммы строки для ККТ
СуммаКГП = Окр(СтрокаТовара.Цена * СтрокаТовара.Количество - СтрокаТовара.СуммаСкидки, 2);
РеальнаяЦенаДляККТ = СуммаКГП / СтрокаТовара.Количество;

// Заполняем структуру для БПО
ОбъектДрайвера.Цена = РеальнаяЦенаДляККТ;
ОбъектДрайвера.Сумма = СуммаКГП;

Используя функцию Окр(), мы гарантируем, что передаваемая сумма оплаты будет в точности соответствовать итогу чека. Проанализируем этот подход: даже если цена получится с большим количеством знаков после запятой, для ККТ приоритетным является итоговое поле Сумма позиции, и ошибка 45h возникать не будет.

Подведем итоги

Решение ошибки 45h требует комплексного подхода. Мы рассмотрели, что в первую очередь необходимо синхронизировать версии программного обеспечения, перейти на 32-битную платформу и правильно установить интеграционную компоненту. Настройка округления в пользу покупателя в 1С — самый эффективный способ избавиться от «лишних» копеек, которые не может обработать математика Штрих-М. Помните, что стабильная работа кассы зависит не только от кода 1С, но и от актуальности прошивки самого фискального регистратора.

← На главную