Почему Атол 55Ф аннулирует чеки со скидкой в 1С и как это исправить?

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

В процессе эксплуатации контрольно-кассовой техники (ККТ) Атол 55Ф, а также смежных моделей 30Ф и 22ПТК в связке с конфигурациями 1С (Розница 2.2, Управление торговлей 10.3), пользователи часто сталкиваются с критической ошибкой при попытке пробить чек со скидкой или бонусами. Программа выдает сообщение: «Чек не напечатан на устройстве для печати чеков... Недопустимое значение. Скидки не поддерживаются». При этом чеки без скидок печатаются в штатном режиме.

Проанализируем ситуацию: данная проблема чаще всего возникает после обновления прошивки кассового аппарата (например, до версий 4555, 5199, 6059 и выше) для работы с форматом фискальных данных ФФД 1.05. Разберем по шагам, почему это происходит и как настроить корректную работу системы.

Выясняем причину ошибки: конфликт драйвера и ФФД

Основная причина кроется в изменении логики взаимодействия драйвера и прошивки ККТ. В старых версиях драйверов (серия 8.х) скидка передавалась в кассу отдельным методом DiscountValue. С переходом на ФФД 1.05 требования к передаче данных ужесточились: теперь ККТ ожидает получения готовой цены за единицу товара уже с учетом всех примененных скидок и надбавок.

Если драйвер пытается использовать устаревший метод BeginItem / EndItem с передачей скидки, прошивка блокирует операцию, так как математическое равенство «Цена * Количество = Сумма» в новых форматах должно соблюдаться без внешних корректировок скидками. Рассмотрим подробнее основные способы решения этой задачи.

Решение 1: Обновление драйверов до версии 9.х или 10.х

Как показывает практика и опыт коллег, использование драйверов версии 8.15.03 становится невозможным на новых прошивках при работе со скидками. Рассмотрим алгоритм перехода на актуальное ПО:

  1. Удалим старый драйвер Атол 8.х с рабочего места и сервера.
  2. Установим драйвер версии 9.12.2 или 10.х. Важно учитывать, что начиная с версии 9.11, разработчики Атол реализовали поддержку новых требований ФФД.
  3. В конфигурации 1С заменим обработку обслуживания (драйвер оборудования) на «АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 9.Х».
  4. Обязательно очистим кэш 1С, так как старые компоненты могут блокировать корректную загрузку новых библиотек.

Важный нюанс: Специалисты отмечают, что для корректной работы требуется версия 1С:Розница не ниже 2.2.6.33, где реализована полноценная поддержка протоколов 9-й серии драйверов.

Решение 2: Проброс портов при работе через RDP

Часто кассы подключены к локальным ПК, а 1С работает в терминальной сессии (RDP). При переходе на драйверы 9.х стандартный проброс COM-портов через ресурсы RDP может вызывать значительные задержки (до 30–40 секунд на чек) или ошибки связи. Проанализируем способы ускорения печати:

Использование стороннего ПО для проброса портов по протоколу TCP/IP (например, VSPE или аналоги). Это позволяет 1С на сервере обращаться к кассе напрямую по IP-адресу, минуя механизмы трансляции портов Windows, что сокращает время печати чека до 3–5 секунд.

В современных реализациях ДТО 10 рекомендуется использовать встроенный Web-сервер Атол. Это наиболее стабильный метод для распределенных систем, где касса видна серверу 1С как сетевое устройство.

Решение 3: Корректировка кода в конфигурации (для программистов)

Если конфигурация доработана или вы используете УТ 10.3, можно изменить механизм подготовки данных для фискализации. Основная идея — передавать в ККТ цену, которая уже включает скидку, и обнулять поле скидки в структуре данных. Посмотрим на пример кода в процедуре ПодготовитьДанныеДляФискализацииЧека:


// Вместо передачи чистой цены и суммы скидки отдельно, 
// рассчитываем цену с учетом скидки программно
СтрокаЧека.Цена = СтрокаТовара.Сумма / СтрокаТовара.Количество;
// Теперь в драйвер уйдет конечная цена, и ФФД 1.05 примет позицию

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


Разница = ТекущаяПозиция.Сумма / ТекущаяПозиция.Количество;
Если Разница <> ЦенаСоСкидками Тогда
    ЗаписьXML.ЗаписатьАтрибут("PriceWithDiscount", XMLСтрока(ТекущаяПозиция.Сумма/ТекущаяПозиция.Количество));
    ЗаписьXML.ЗаписатьАтрибут("DiscountSum" , XMLСтрока(0));
Иначе
    ЗаписьXML.ЗаписатьАтрибут("PriceWithDiscount", XMLСтрока(ЦенаСоСкидками));
    ЗаписьXML.ЗаписатьАтрибут("DiscountSum" , XMLСтрока(ТекущаяПозиция.СуммаСкидок));
КонецЕсли;

Решение 4: Настройка форматно-логического контроля (ФЛК)

Проанализируем еще одну тонкую настройку в параметрах ККТ внутри 1С. В настройках оборудования есть раздел «Параметры ККТ», где присутствует флаг Форматно-логический контроль. Рекомендуется:

  1. Убедиться, что контроль включен.
  2. В поле допустимого расхождения сумм вместо значения 0,01 установить 0. Это заставит систему более жестко контролировать математическую точность перед отправкой команды в драйвер, предотвращая попытку пробить некорректно округленный чек, который касса все равно аннулирует.

Резюме и рекомендации

Подводя итог, можно сказать, что проблема со скидками на Атол 55Ф — это системный конфликт старого программного обеспечения 1С (или драйверов) с новыми законодательными требованиями к оформлению чека. Для стабильной работы рекомендуем:

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

← На главную