Как исправить печать «НДС 0%» вместо «Без НДС» на кассах АТОЛ в 1С:Управление торговлей

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

При работе на упрощенной системе налогообложения (УСН) или патенте организации и индивидуальные предприниматели освобождены от уплаты НДС. Согласно требованиям Федерального закона № 54-ФЗ, в кассовых чеках для таких пользователей должна печататься ставка «Без НДС». Однако на практике пользователи ККТ АТОЛ часто сталкиваются с тем, что касса упорно выводит на чеке «НДС 0%».

С точки зрения налогового законодательства, «НДС 0%» и «Без НДС» — это абсолютно разные налоговые ставки. Неверное указание ставки в чеке может повлечь за собой штрафные санкции со стороны налоговых органов. Разберем подробно, почему возникает эта ошибка и как её исправить в программе «1С:Управление торговлей 11».

Выясняем причину проблемы

В типовых конфигурациях 1С при формировании чека для организации без НДС в XML-пакет передается текстовое значение ставки налогообложения none. Однако при попытке пробития чека на кассах АТОЛ со старой версией драйвера ККТ возникает критическая ошибка:

«При выполнении операции произошла ошибка: 'none' is not a valid integer value»

Эта ошибка указывает на то, что внешняя компонента 1С (библиотека связи с ККТ) пытается преобразовать строковое значение none в целое число (индекс налоговой ставки в ККТ), но не может этого сделать. В результате касса либо отказывается печатать чек, либо, если в кодовой базе оставлен старый механизм передачи числового нуля, печатает ставку «НДС 0%».

Шаг 1. Обновление интеграционной библиотеки драйвера

Для поддержки современных требований 1С по передаче строковых наименований ставок (таких как none) необходимо обновить внешнюю компоненту связи. Речь идет о библиотеке FprnM1C82_54FZ.dll (для драйверов АТОЛ семейства 8.х).

Выполним процедуру обновления по шагам:

  1. Найдем актуальную версию библиотеки FprnM1C82_54FZ.dll (версии не ниже 8.12.1.0, оптимально — 8.14.2.0 или новее). Её можно взять из обновленного релиза конфигурации 1С или дистрибутива драйвера торгового оборудования.
  2. Поместим файл библиотеки в системную директорию операционной системы. Для 64-разрядных систем Windows это папка C:\Windows\SysWOW64, для 32-разрядных — C:\Windows\System32.
  3. Зарегистрируем библиотеку в реестре Windows. Для этого запустим командную строку от имени администратора и выполним следующую команду: regsvr32 C:\Windows\SysWOW64\FprnM1C82_54FZ.dll
  4. Если конфигурация 1С продолжает использовать старую версию компоненты, необходимо убедиться, что платформа не берет сохраненную временную копию из кэша. Для этого можно временно очистить кэш 1С или принудительно обновить обработку обслуживания ККТ в справочнике «Драйверы оборудования».

Шаг 2. Добавление обязательного параметра Department в XML-пакет

Даже после успешного обновления библиотеки драйвера отправка ставки Tax="none" может приводить к аварийному завершению работы компоненты (ошибкам обращения к памяти типа Access violation). Это связано с тем, что новая библиотека требует обязательного указания номера секции (отдела) для каждого товарного ряда чека.

Проанализируем структуру отправляемого XML-пакета. Чтобы исправить ошибку, необходимо в позицию чека FiscalString добавить обязательный атрибут Department со значением номера секции (обычно это 1).

Пример некорректного XML-пакета, вызывающего ошибку драйвера:


<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters PaymentType="1" TaxVariant="1" CustomerEmail="" CustomerPhone="+79000000000"/>
    <Positions>
        <FiscalString Name="Товар без НДС" Quantity="1" Price="100" Amount="100" Tax="none"/>
    </Positions>
    <Payments Cash="100" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>

Пример корректного XML-пакета с добавленным атрибутом Department, при котором чек успешно пробивается со ставкой «Без НДС»:


<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters PaymentType="1" TaxVariant="1" CustomerEmail="" CustomerPhone="+79000000000"/>
    <Positions>
        <FiscalString Name="Товар без НДС" Quantity="1" Price="100" Amount="100" Department="1" Tax="none"/>
    </Positions>
    <Payments Cash="100" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>

В коде конфигурации в процедуре формирования XML перед отправкой пакета на ККТ убедитесь, что структура заполняется значением СтрокаПозицииЧека.Отдел = 1; (или соответствующим реквизитом секции).

Шаг 3. Настройка параметров в «Тест драйвера ККТ»

Иногда внутренняя логика фискального накопителя и ККТ АТОЛ все равно подменяет ставку на основе внутренних таблиц налогов. Чтобы гарантировать правильное сопоставление, выполним настройку через утилиту производителя:

  1. Закроем программу 1С и запустим утилиту «Тест драйвера ККТ» от АТОЛ.
  2. Установим связь с кассовым аппаратом, перейдем в раздел «Свойства» -> «Параметры ККТ».
  3. Найдем раздел «Секции». Для Секции №1 проверим привязанный налог. В зависимости от версии прошивки вашей кассы (Платформа 2.5 или 5.0), индекс ставки «Без НДС» может отличаться. Установим для Секции 1 налоговую ставку «Без НДС» (обычно это индекс 4, 5 или 6).
  4. Сохраним настройки ККТ.

Шаг 4. Настройка сопоставления в 1С и переход на современный драйвер

Если ручные правки кода нежелательны, решением проблемы станет обновление программы «1С:Управление торговлей» до актуального релиза. В современных версиях конфигурации сопоставление ставок НДС и налоговых групп ККТ вынесено в пользовательский интерфейс:

← На главную