При использовании конфигурации «1С:Управление торговлей 10.3» пользователи часто сталкиваются с ситуацией, когда организация или индивидуальный предприниматель работает на специальном налоговом режиме (УСН «Доходы», УСН «Доходы минус расходы» или ЕНВД/ПСН), но на фискальном чеке продолжает печататься НДС. Установка флага «Организация не является плательщиком НДС» в учетной политике не всегда автоматически решает проблему при пробитии чеков из документа ЧекККМ.
Разберем причины такого поведения системы, механизм передачи налоговых ставок в подключаемое оборудование и способы правильной настройки печати чеков без НДС.
Выясним, как типовой механизм УТ 10.3 определяет ставку налога при печати фискального чека. В модуле документа ЧекККМ формирование параметров фискализации происходит в процедуре ПодготовитьДанныеДляФискализацииЧека.
Типовой код вычисляет ставку через обращение к общему модулю:
СтрокаЧека.СтавкаНДС = МенеджерОборудованияКлиентСервер.ПолучитьСтавкуНДСДляФискализацииЧека(
СтрокаТовара.Номенклатура.СтавкаНДС,
ПорядокНалогообложения
);
Посмотрим на реализацию функции ПолучитьСтавкуНДСДляФискализацииЧека:
Функция ПолучитьСтавкуНДСДляФискализацииЧека(СтавкаНДС, ПорядокНалогообложения = "") Экспорт
Если СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.БезНДС")
ИЛИ СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.ПустаяСсылка")
ИЛИ ВРег(ПорядокНалогообложения) = "ЕНВД" Тогда
Результат = "";
ИначеЕсли СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС10") Тогда
Результат = 10;
ИначеЕсли СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС18") Тогда
Результат = 18;
ИначеЕсли СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС10_110") Тогда
Результат = 110;
ИначеЕсли СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС18_118") Тогда
Результат = 118;
КонецЕсли;
Возврат Результат;
КонецФункции
Критически важный момент: значение ставки налога для драйвера фискального регистратора передается числом или пустой строкой. Пустая строка "" соответствует признаку «Без НДС». Если передать числовое значение 0, драйвер расценит это как фискальную ставку «НДС 0%», что приведет к некорректным данным в отчетах оператора фискальных данных (ОФД) и налоговых органов.
Если в карточках номенклатуры уже указаны базовые ставки (например, 18% или 20%), а продажи оформляются от лица организации на УСН, логику заполнения реквизита СтрокаЧека.СтавкаНДС можно переопределить программно на основании регистра сведений УчетнаяПолитикаНалоговыйУчет.
Рассмотрим по шагам реализацию проверки учетной политики в модуле документа ЧекККМ:
ЧекККМ.ПодготовитьДанныеДляФискализацииЧека.ОрганизацияНеЯвляетсяПлательщикомНДС через запрос к срезу последних регистра сведений.Пример оптимизированного кода доработки:
З = Новый Запрос;
З.Текст =
"ВЫБРАТЬ
| УчетнаяПолитика.ОрганизацияНеЯвляетсяПлательщикомНДС КАК НеПлательщикНДС
|ИЗ
| РегистрСведений.УчетнаяПолитикаНалоговыйУчет.СрезПоследних(&Период, Организация = &Организация) КАК УчетнаяПолитика";
З.УстановитьПараметр("Период", ЭтотОбъект.Дата);
З.УстановитьПараметр("Организация", ЭтотОбъект.Организация);
Выборка = З.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.НеПлательщикНДС = Истина Тогда
СтрокаЧека.СтавкаНДС = "";
КонецЕсли;
КонецЕсли;
Помимо логики в коде 1С, необходимо убедиться в корректности параметров торгового оборудования и драйвера кассового аппарата (АТОЛ, Штрих-М и др.):