Почему не печатается чек на ККМ АТОЛ при частичной оплате бонусами или скидках в 1С:Управление торговлей и как это исправить?

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

При оформлении продаж с применением скидок или с частичной оплатой бонусными баллами пользователи конфигурации 1С:Управление торговлей 11 часто сталкиваются с ситуацией, когда обычные чеки пробиваются без проблем, но при добавлении скидки или бонусов фискальный регистратор (например, АТОЛ 52Ф или АТОЛ 30Ф) выдает ошибку или платформа 1С аварийно завершает работу.

Разберем по шагам причины возникновения этой проблемы и рассмотрим проверенные способы её устранения.

Причина 1. Ошибки расчета сумм и округления в драйвере АТОЛ ДТО 8

Проанализируем механику передачи данных из 1С в драйвер кассового аппарата. Когда в чеке присутствует скидка или частичная оплата бонусами, 1С распределяет сумму скидки по позициям номенклатуры. В устаревших версиях драйверов (в частности, линейки АТОЛ ДТО 8.x) алгоритмы расчета округления копеек отличаются от внутренних алгоритмов 1С.

В результате возникает математическое расхождение: сумма строк с учетом скидки не сходится с итоговой суммой чека на 1 копейку. ККТ блокирует печать такого чека, воспринимая это как нарушение требований ФФД (Формата фискальных документов).

Решение: Установим более свежую версию драйвера ККТ АТОЛ (ДТО 9 или ДТО 10), в которой переработан механизм обработки суммовых скидок и форматно-логического контроля.

Причина 2. Аварийное завершение (краш) платформы 1С при установке ДТО 9

После установки дистрибутива ДТО 9 в операционную систему попытка пробить чек может привести к критической ошибке и закрытию программы 1С. Выясним, почему это происходит.

Падение платформы вызывает рассинхронизация версий: в самой 1С в справочнике драйверов зарегистрирована одна интеграционная компонента (файл fptr1c.dll / fptr.dll), а в системе установлен дистрибутив другой сборки. При вызове функций внешнего драйвера возникает конфликт структур данных C++.

Шаг 1. Проверка и обновление интеграционной компоненты драйвера в 1С

Разберем процесс обновления драйвера ККТ непосредственно внутри 1С:

  1. Перейдем в раздел Администрирование > Подключаемое оборудование.
  2. Откроем справочник Драйверы оборудования и найдем установленный драйвер АТОЛ.
  3. Проверим версию компоненты, зарегистрированной в базе, и сравним ее с версией установленного в системе пакета (например, Drivers9-KKT-9.x.x).
  4. Если версии различаются, выберем команду Загрузить драйвер из файла и укажем zip-архив с актуальной компонентой, поставляемой вместе с дистрибутивом ДТО.

Шаг 2. Импорт драйвера из более свежей конфигурации 1С

Если используемый релиз конфигурации (например, УТ 11.3) содержит устаревший комплект встроенных библиотек для работы с ДТО 9, выполним следующую процедуру:

  1. Откроем более свежий релиз конфигурации (например, 1С:Управление торговлей 11.4 или свежую 1С:Розница).
  2. Зайдем в справочник Драйверы оборудования и экспортируем zip-архив внешней компоненты АТОЛ ДТО 9/10.
  3. Загрузим полученный файл обработки/компоненты в нашу рабочую базу 1С:УТ 11.3 через кнопку Добавить новый драйвер из файла.
  4. В настройках экземляра подключаемого оборудования переключим кассу на использование нового драйвера и выполним тест устройства.

Шаг 3. Настройка форматно-логического контроля (ФЛК) в 1С

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

  1. Откроем карточку экземпляра ККТ в справочнике Подключаемое оборудование.
  2. Найдем параметр Способ форматно-логического контроля (или разбиения строк).
  3. Установим значение Разбивать строки (или Разделять позиции).

При этой настройке 1С автоматически разобьет одну позицию номенклатуры с некратной суммой скидки на несколько строк с разной ценой (например, 1 шт. по 100 руб. и 1 шт. по 99.99 руб.), чтобы итоговая сумма точно совпала с фискальным чеком.

← На главную