Почему при печати чека из 1С на кассе Штрих-М выводится «Без НДС» вместо 20%?

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

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

В этой статье мы подробно разберем причины возникновения такой ошибки в различных конфигурациях («1С:Управление производственным предприятием», «1С:Бухгалтерия предприятия 3.0», «1С:Бухгалтерия государственного учреждения» и «1С:Управление торговлей») и рассмотрим пошаговые инструкции по их устранению — от настройки кассового аппарата Штрих-М до программных доработок кода.

---

Причина 1. Проблемы на стороне кассового аппарата и драйвера Штрих-М

Первое, что необходимо проанализировать — это взаимодействие торгового оборудования с учетной системой. Очень часто кассовый аппарат физически отвергает ставку 20%, присылая в 1С ошибку вроде «Invalid Tax Value: 20» или код ошибки FFFFFF8h. Система 1С, не получив подтверждения от ККТ, может зависнуть, аварийно завершить работу или принудительно распечатать чек по дефолтной ставке («Без НДС»).

Для решения этой проблемы выполним следующие действия:

  1. Проверка таблицы налоговых ставок в ККТ. Запустим утилиту «Тест драйвера ФР» от Штрих-М. Перейдем в раздел «Настройки» — «Таблицы» и откроем Таблицу № 6 «Налоговые ставки». Нам нужно убедиться, что строка, отвечающая за ставку 20%, запрограммирована верно. Значение ставки должно быть указано как 2000 (что означает 20.00%). Если там содержатся устаревшие данные (например, 18.00% или нули), ККТ не сможет обработать команду из 1С.
  2. Проверка подписки на обновления (лицензии ККТ). Современные кассы семейства Штрих-М требуют ввода коммерческой лицензии (кода защиты) непосредственно в память аппарата для работы с новыми форматами фискальных данных и ставками налогов. Если кассу физически перепрошили, но не ввели соответствующий файл лицензии, ККТ заблокирует применение ставки 20%. Проверить статус подписки можно также через утилиту «Тест драйвера ФР» в разделе запроса состояния ККТ.
  3. Очистка локального кэша интеграционных компонент. Частое явление: администратор обновляет драйвер ККТ на компьютере, но 1С продолжает использовать старую библиотеку интеграции из своего внутреннего кэша. Чтобы исправить это, закроем 1С и полностью удалим содержимое папки:
    %userprofile%\AppData\Roaming\1C\1cv8\ExtCompT\
    При следующем запуске и попытке пробить чек 1С принудительно распакует актуальную версию компоненты драйвера (например, smDrvFR1CLib24.dll).
  4. Использование XML-файла сопоставления. В некоторых версиях драйвера сопоставление налогов прописывается в специальном конфигурационном файле (например, ShtrihM_KKT.xml). Проверим наличие этого файла в каталоге установки шаблонов или в папке с базой данных и убедимся, что секция сопоставления содержит корректные индексы:

<TaxRates>
    <TaxRate Value="20" TaxIndex="1" />
    <TaxRate Value="10" TaxIndex="2" />
    <TaxRate Value="0" TaxIndex="3" />
    <TaxRate Value="None" TaxIndex="4" />
</TaxRates>

---

Причина 2. Опция «Подготовить данные к передаче в ОФД» в Бухгалтерии 3.0 и Бизнес-Старт

Если проблема со ставкой НДС 20% и некорректным количеством (когда во всех позициях чека принудительно ставится количество «1», а цена приравнивается к общей стоимости строки) наблюдается в современных управляемых конфигурациях, таких как «1С:Бухгалтерия 3.0» или «1С:БизнесСтарт», причиной является специфическая настройка интеграции.

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

Решение: необходимо отключить эту константу. Сделать это можно через меню «Функции для технического специалиста» (ранее — «Все функции»), найдя в списке констант Подготовить данные к передаче в ОФД и сняв соответствующий флаг. Если доступ к функциям ограничен, воспользуемся стандартной обработкой «Групповое изменение реквизитов» для изменения значения данной константы на Ложь.

---

Причина 3. Способ расчета «Оплата кредита» (постоплата)

Рассмотрим ситуацию, когда НДС 20% пропадает только при пробитии чеков на получение доплаты или окончательный расчет, когда способ расчета классифицируется как «Оплата кредита».

Выясним методологическую причину такого поведения системы. Согласно разъяснениям налоговых органов (в частности, Письму ФНС России от 04.02.2019 № ЕД-4-20/1812@), при передаче товаров в кредит формируется первый чек (признак способа расчета — «Передача в кредит»), в котором указывается полная номенклатура и рассчитывается НДС 20%. Когда клиент вносит денежные средства в счет погашения этого кредита, формируется второй чек (с признаком «Оплата кредита»). В этом втором чеке ставка НДС не должна выделяться (выводится «Без НДС» или «НДС не облагается»), чтобы избежать двойного начисления налога в ОФД и учетной системе.

В конфигурациях 1С для реализации этого требования заложен жесткий алгоритм. В общем модуле ФорматноЛогическийКонтрольКлиентСервер в процедуре ПривестиДанныеКТребуемомуФормату система программно очищает ставку НДС для платежей по кредиту.

Если в вашей организации принято решение (несмотря на рекомендации ФНС) выводить ставку НДС в чеках постоплаты для информативности покупателей, этот алгоритм придется скорректировать. Посмотрим на пример кода, который отвечает за это поведение:


// Фрагмент процедуры ПривестиДанныеКТребуемомуФормату
Для Каждого СтрокаПозиции Из ПараметрыЧека.ПозицииЧека Цикл
    Если СтрокаПозиции.ПризнакСпособаРасчета = ПредопределенноеЗначение("Перечисление.ПризнакиСпособовРасчета.ОплатаКредита") Тогда
        // Код 1С по умолчанию затирает ставку НДС:
        // СтрокаПозиции.СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.БезНДС");
        
        // Для сохранения ставки НДС эту строку можно закомментировать в расширении
    КонецЕсли;
КонецЦикла;

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

---

Причина 4. Необходимость доработки программного кода в старых конфигурациях (БГУ 2.0, УПП 1.3)

В более старых программных продуктах (например, «1С:Бухгалтерия государственного учреждения 2.0» ранних релизов или «1С:Управление производственным предприятием 1.3») поддержка ставки 20% в коде интеграции с оборудованием может полностью отсутствовать или работать со сбоями.

Разберем, как точечно доработать общий модуль МенеджерОборудованияВызовСервера для корректного сопоставления новой ставки НДС. Нам нужно найти функцию, которая подготавливает XML-пакет для передачи в драйвер ККТ, и добавить туда явное преобразование ставки 20%.

Проанализируем пример доработки кода:


// В общем модуле МенеджерОборудованияВызовСервера найдем процедуру ПодготовитьДанныеДляЧекаККМ
// Добавим обработку ставки НДС 20% в блок сопоставления:

Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 
   Или СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
    
    // Передаем драйверу ККТ ставку 20%
    СтрокаЧека.Налог = 1; // Индекс налога 20% в таблице ККТ Штрих-М
    СтрокаЧека.СтавкаНДС = 20;

ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 
   Или СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
    
    СтрокаЧека.Налог = 2;
    СтрокаЧека.СтавкаНДС = 10;
    
Иначе
    // Для всех остальных случаев устанавливаем "Без НДС"
    СтрокаЧека.Налог = 4;
    СтрокаЧека.СтавкаНДС = 0;
КонецЕсли;

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

← На главную