Почему касса Атол аннулирует чек при печати из 1С 7.7 и как это исправить?

Программист 1С v7.7 1С:Управление торговлей Налоговый учет Торговля и дистрибуция
← На главную

При переходе на ставку НДС 20% многие пользователи 1С 7.7 столкнулись с неприятной ситуацией: касса Атол при попытке пробить чек выдает ошибку или печатает «Чек аннулирован», хотя в интерфейсе 1С операция помечается как успешная. Давайте разберем, почему это происходит и как программно доработать обработку обслуживания, чтобы исправить ошибку.

Разбор причин сбоя

Основная причина заключается в том, что старые обработки обслуживания (файлы с расширением .ert) в 1С 7.7 были рассчитаны на работу с фиксированным набором ставок НДС (чаще всего 0%, 10% и 18%). Когда в системе появляется товар со ставкой 20%, обработка не находит соответствующего алгоритма для передачи этой ставки в фискальный накопитель. В результате ККТ получает некорректные данные, не может сформировать фискальный чек и выполняет команду аннулирования для предотвращения нарушения законодательства.

Шаг 1: Подготовка конфигурации и драйверов

Прежде чем приступать к исправлению кода, убедитесь в следующем:

  1. Ваша прошивка ККТ актуальна и поддерживает работу с ФФД 1.05 или 1.1.
  2. Драйвер ККТ Атол обновлен до версии 8.x или 10.x.
  3. Компонента FprnM1C...dll корректно зарегистрирована в системе через regsvr32 от имени администратора.
  4. Если вы работаете через RDP, драйверы должны быть обновлены на стороне сервера.

Шаг 2: Доработка обработки обслуживания

Чтобы заставить 1С корректно передавать ставку НДС 20%, необходимо внести изменения в файл внешней обработки обслуживания frATOL54_comm.ert (или его аналог frATOL54_comm_105.ert). Вам нужно найти функцию ПечататьЧек и добавить условие для обработки 20% НДС.

Рассмотрим подробнее логику внесения изменений:


// В функции ПечататьЧек найдите цикл обхода строк списка товаров
Пока СписокТоваров.ПолучитьСтроку = 1 Цикл
    Объект.Name = СписокТоваров.ТовНаим;
    Объект.Price = СписокТоваров.Цена;
    Объект.Quantity = СписокТоваров.Количество;
    
    // Добавляем обработку ставки НДС 20%
    Если СписокТоваров.СтавкаНДС = "none" Тогда
        Объект.TaxTypeNumber = 4;
    ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда
        Объект.TaxTypeNumber = 3;
    ИначеЕсли СписокТоваров.СтавкаНДС = "20" Тогда
        Объект.TaxTypeNumber = 3; // Для большинства ФФД 1.05 ставка 20% передается как 3
    ИначеЕсли СписокТоваров.СтавкаНДС = "10" Тогда
        Объект.TaxTypeNumber = 2;
    ИначеЕсли СписокТоваров.СтавкаНДС = "0" Тогда
        Объект.TaxTypeNumber = 1;
    КонецЕсли;
    
    // Далее следует код вызова регистрации товара
    Если ПризнВозврата = 0 Тогда
        Если Объект.Registration <> 0 тогда
            ОписаниеРезультата = Объект.ResultDescription;
            Возврат Рез;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Шаг 3: Проверка корректности передачи данных

После внесения правок важно проверить, как именно объект Объект.TaxTypeNumber соотносится с настройками вашей кассы. В зависимости от прошивки и ФФД, идентификаторы налогов могут отличаться. Если после внесения изменений чек все равно аннулируется, попробуйте следующий подход для отладки:

Анализ через отладчик: Проверьте, какое именно значение СписокТоваров.СтавкаНДС возвращает ваша номенклатура. Убедитесь, что в справочнике «Номенклатура» у товаров правильно выбрана ставка (20% вместо 18%).

Альтернативные способы решения

Если правка кода вызывает затруднения, можно рассмотреть следующие варианты:

Помните, что при изменении кода обработки 1С 7.7 всегда делайте резервную копию файла. После внесения правок перезапустите 1С, чтобы новая версия обработки гарантированно подгрузилась в память.

← На главную