Как настроить печать чеков со ставкой «Без НДС» на ККТ АТОЛ в 1С:Торговля и Склад 7.7?

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

При переходе на онлайн-кассы по требованиям 54-ФЗ в конфигурации 1С:Торговля и Склад 7.7 (релизы 989, 990 и аналогичные) разработчики часто сталкиваются с ошибками при попытке пробить чек без НДС (например, на УСН или патенте). Кассовый аппарат АТОЛ либо возвращает ошибку о том, что значение налога должно быть числом ('none' is not a valid integer value), либо чек пробивается с нулевой ставкой НДС 0%, либо касса просто «выпадает в осадок» без понятного описания ошибки.

Разберем детально, почему возникает эта неполадка, какие нюансы законодательства следует учитывать и как пошагово доработать штатную обработку обслуживания торгового оборудования frATOL54_comm.ert.

Законодательные требования и поведение ККТ

Прежде чем приступать к программным правкам, проанализируем требования форматов фискальных документов (ФФД 1.05, 1.1, 1.2). В соответствии с правилами применения кассовой техники:

  1. Для налогоплательщиков, применяющих специальные налоговые режимы (УСН, ПСН) или освобожденных от уплаты НДС по статье 145 НК РФ, реквизиты «Ставка НДС» (тег 1199) и «Сумма НДС» (теги 1102–1107) в печатной форме бумажного чека не являются строго обязательными.
  2. В прошивках современных ККТ печать строки «Без НДС» на бумажной чековой ленте нередко намеренно отключена производителем в целях экономии кассовой ленты (компактный шаблон чека). При этом в фискальный накопитель и в ОФД данные об отсутствии налога передаются корректно. Отсутствие строки «Без НДС» на бумаге нарушением не является.
  3. Если же вместо отсутствия налога отправляется значение 0, касса регистрирует операцию по ставке 0%. Это является грубой налоговой ошибкой для спецрежимов, так как ставка 0% применяется исключительно для определенных операций (экспорт, международные перевозки и т. д.), что неизбежно вызовет претензии со стороны ФНС.

Причины сбоя в интеграции 1С 7.7 и драйвера АТОЛ

Выясним причину технического сбоя. Типовой механизм 1С 7.7 под 54-ФЗ использует схему формирования XML-пакета чека (CheckPackage), который передается во внешнюю компоненту FprnM1C82_54FZ.dll. В этой цепочке кроется несколько критических проблем:

  1. Ошибки парсера внешней компоненты: В ряде версий драйверов (включая отозванный релиз пакета ККТ 15) компонента некорректно обрабатывает текстовое значение налога none и пытается преобразовать его во внутренний целочисленный индекс без предварительной валидации.
  2. Обязательность указания отдела: Внутренний парсер некоторых версий драйвера падает с критической ошибкой, если в XML-строке товарной позиции отсутствует атрибут секции Department.
  3. Ошибки в штатной обработке 1С: Типовая обработка frATOL54_comm.ert содержит несколько опечаток и логических ошибок разработчиков, препятствующих штатной работе оборудования.

Пошаговое решение проблемы

Рассмотрим по шагам все действия, необходимые для гарантированного устранения проблемы.

Шаг 1. Замена и подбор стабильной версии внешней компоненты

Посмотрим на используемую библиотеку драйвера. Если в системе установлен сбойный драйвер из пакета ККТ 15, его необходимо заменить. Рекомендуется использовать проверенную стабильную версию библиотеки FprnM1C82_54FZ.dll (из стабильных релизов ДТО 8/9 или сертифицированных сборок 1С). Зарегистрируем библиотеку в операционной системе стандартным способом через regsvr32 при необходимости.

Шаг 2. Исправление ошибок в обработке frATOL54_comm.ert

Откроем внешнюю обработку frATOL54_comm.ert в конфигураторе и внесем следующие точечные изменения.

1. Исправление опечатки в установке скорости порта

В оригинальном коде разработчики ошибочно передавали номер порта вместо скорости:


// Ошибка оригинала:
// Объект.УстановитьПараметр("BaudRate", ПортНомер);

// Исправленный вариант:
Объект.УстановитьПараметр("BaudRate", ПортСкорость);

2. Явное указание системы налогообложения

В процедуре формирования общих параметров фискального документа найдем блок параметров и зададим применяемую систему налогообложения явным образом (1 — ОСН, 2 — УСН доход, 4 — УСН доход-расход, 8 — ЕНВД, 16 — ЕСХН, 32 — ПСН):


СистемаНалогообложения = 2; // Укажите код вашей системы налогообложения
Атрибут(XMLParameters, "TaxVariant", СистемаНалогообложения);

3. Добавление обязательного атрибута Department

Найдем цикл перебора строк чека, где формируется узел XMLFiscalString, и добавим обязательную передачу номера отдела. Без этого параметра многие версии драйвера завершают работу аварийно:


// В цикле формирования фискальных строк добавляем:
Атрибут(XMLFiscalString, "Department", "01");

4. Корректировка возврата результата в функции печати

Проанализируем функцию ПечататьЧек(...). В типовой реализации функция в самом конце возвращает результат операции отключения от фискального регистратора, а не фактический результат печати. В результате, если чек не напечатался из-за ошибки, документ в 1С все равно считает операцию успешной. Исправим этот момент:


// В конце функции ПечататьЧек(...) убедимся,
// что возвращается переменная с результатом печати фискального чека:
Возврат Рез;

Шаг 3. Настройка таблиц секций и налогов в драйвере ККТ

Запустим утилиту «Тест драйвера ККТ» и проверим внутренние таблицы кассового аппарата:

  1. Перейдем в настройки таблиц фискального регистратора.
  2. Найдем таблицу секций (отделов) и выберем используемую секцию 01 (или 1).
  3. Назначим для секции 01 налог по умолчанию с признаком отсутствия НДС. Обратите внимание: в старых версиях прошивок налог «Без НДС» соответствовал индексу 4, а в прошивках под ФФД 1.05 и выше индекс налога «Без НДС» сместился на позицию 6 (1 — 20%, 2 — 10%, 3 — 0%, 4 — 20/120, 5 — 10/110, 6 — без НДС).
  4. При необходимости включите полный (не компактный) шаблон печати чека в параметрах ККТ, если требуется обязательное визуальное присутствие строки на чековой ленте.

Альтернативный вариант: прямой вызов методов драйвера без XML

Если штатная схема через XML-пакеты и библиотеку FprnM1C82_54FZ.dll продолжает вызывать трудности, рассмотрим альтернативный путь. В среде 1С:Предприятие 7.7 надежным решением является отказ от промежуточной прослойки 1С и переход на прямое управление нативным COM-объектом драйвера АТОЛ (AddIn.FprnM45 для ДТО 8/9 или AddIn.Fptr10 для ДТО 10).

При прямом обращении к методам драйвера свойства фискальной позиции передаются явными целочисленными значениями через параметры драйвера (такие как TaxTypeNumber, TaxMode, Department), что полностью исключает ошибки разбора XML-строк и гарантирует точную передачу признака отсутствия налога в кассовый аппарат.

← На главную