Как настроить правильную ставку НДС в чеке ККМ при применении УСН в 1С?

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

При переходе на онлайн-кассы и фискализацию чеков в конфигурациях на обычных формах (таких как 1С:Комплексная автоматизация 1.1 или 1С:Управление торговлей 10.3) пользователи часто сталкиваются с ситуацией, когда кассовый аппарат печатает ставку НДС 18% (или 20%) по организации, применяющей упрощенную систему налогообложения (УСН). Разберем причины такого поведения платформы и способы корректной настройки фискализации чека.

Выясним причину возникновения ошибки

Проанализируем типовой алгоритм формирования данных для фискализации в документе ЧекККМ. В модуле объекта документа в процедуре ПодготовитьДанныеДляФискализацииЧека заполнение ставки НДС обычно выглядит следующим образом:


СтрокаЧека.СтавкаНДС = МенеджерОборудованияКлиентСервер.ПолучитьСтавкуНДСДляФискализацииЧека(
    СтрокаТовара.Номенклатура.СтавкаНДС, 
    ПорядокНалогообложения
);

В этой схеме возникают сразу две проблемы:

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

По требованиям формата фискальных данных (ФФД) для организаций на спецрежимах, освобожденных от уплаты налога, в реквизит предмета расчета (тег 1199) должно передаваться значение «Без НДС», а не 0% или 18%/20%.

Вариант 1. Программная корректировка процедуры фискализации чека

Рассмотрим, как скорректировать заполнение структуры фискальной строки чека в модуле объекта документа ЧекККМ. Если информационная база работает только с организацией на УСН, достаточно передавать в функцию значение Перечисления.СтавкиНДС.БезНДС:


Для Каждого СтрокаТовара Из ЧекККМ.Товары Цикл
    СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыФискальнойСтрокиЧека();
    
    СтрокаЧека.Наименование = "(" + СокрЛП(СтрокаТовара.Номенклатура.Код) + ") " + СокрЛП(СтрокаТовара.Номенклатура.Наименование) + 
        ФормированиеПечатныхФорм.ПредставлениеСерий(СтрокаТовара, "ХарактеристикаНоменклатуры", "СерияНоменклатуры") +
        " " + Строка(СтрокаТовара.ЕдиницаИзмерения);
    СтрокаЧека.Количество = СтрокаТовара.Количество;
    СтрокаЧека.Цена = СтрокаТовара.Цена;
    СтрокаЧека.Сумма = СтрокаТовара.Сумма;
    
    // Передаем признак "Без НДС" вместо ставки из карточки номенклатуры
    СтрокаЧека.СтавкаНДС = МенеджерОборудованияКлиентСервер.ПолучитьСтавкуНДСДляФискализацииЧека(
        Перечисления.СтавкиНДС.БезНДС, 
        ПорядокНалогообложения
    );
    
    СтрокаЧека.Штрихкод = СокрЛП(СтрокаТовара.ШтрихКод);
    СтрокаЧека.НомерСекции = Склад.НомерСекции;
    
    // Заполнение признаков способа и предмета расчета
    СтрокаЧека.КодПризнакаСпособаРасчета = 4;
    СтрокаЧека.КодПризнакаПредметаРасчета = ?(СтрокаТовара.Номенклатура.ВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга, 4, 1);
    
    ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаЧека);
КонецЦикла;

Вариант 2. Универсальная доработка для многофирменного учета

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


// Определяем систему налогообложения организации
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	УчетнаяПолитика.СистемаНалогообложения КАК СНО
    |ИЗ
    |	РегистрСведений.УчетнаяПолитикаПоНалогообложению.СрезПоследних(&Период, Организация = &Организация) КАК УчетнаяПолитика";

Запрос.УстановитьПараметр("Период", Дата);
Запрос.УстановитьПараметр("Организация", Организация);
Результат = Запрос.Выполнить();

ОрганизацияНаУСН = Ложь;
Если Не Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    ОрганизацияНаУСН = (Выборка.СНО <> Перечисления.СистемыНалогообложения.Общая);
КонецЕсли;

Для Каждого СтрокаТовара Из Товары Цикл
    СтрокаЧека = МенеджерОборудованияКлиентСервер.ПараметрыФискальнойСтрокиЧека();
    // Заполнение реквизитов строки...
    
    Если ОрганизацияНаУСН Тогда
        СтавкаДляЧека = Перечисления.СтавкиНДС.БезНДС;
    Иначе
        СтавкаДляЧека = СтрокаТовара.Номенклатура.СтавкаНДС;
    КонецЕсли;
    
    СтрокаЧека.СтавкаНДС = МенеджерОборудованияКлиентСервер.ПолучитьСтавкуНДСДляФискализацииЧека(
        СтавкаДляЧека, 
        ПорядокНалогообложения
    );
    
    ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаЧека);
КонецЦикла;

Вариант 3. Настройка налоговых ставок в драйвере и торговом оборудовании

Посмотрим на параметры сопоставления ставок НДС на уровне драйвера кассового аппарата и 1С. Корректная передача налога требует согласованности таблиц ККТ и настроек в программе:

  1. Откроем форму настройки подключаемого оборудования в 1С (Подключаемое оборудование → ККТ с передачей данных).
  2. Проверим таблицу соответствия налоговых ставок 1С и налоговых секций фискального регистратора.
  3. Убедимся, что для значения «Без НДС» сопоставлена именно секция драйвера «Не облагается / Без налога», а не ставка с нулевым процентом (0%). Для фискальных накопителей ставки «0%» и «Без НДС» являются принципиально разными фискальными признаками.
  4. При необходимости выполним обновление внешней обработки обслуживания (например, ShtrihMkkt.epf) и драйвера ККТ до актуальных версий с полной поддержкой требований ФФД.
← На главную