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