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