При переходе на новые форматы фискальных данных (ФФД) пользователи часто сталкиваются с ситуацией, когда в чеках ККТ Viki Print (Вики Принт) печатается НДС 18% (или 20%), несмотря на то, что организация находится на спецрежиме (ЕНВД или ПСН) и не является плательщиком НДС. Особенно остро эта проблема проявляется в старых конфигурациях, таких как 1С:Управление торговлей 10.3.
В этой статье мы подробно разберем, как исправить алгоритм передачи налоговых ставок, какие настройки проверить в самой кассе и как модифицировать код 1С для корректной фискализации чеков.
Проанализируем ситуацию: фискальный регистратор — это исполнительное устройство. Он печатает то, что ему передает драйвер из программы 1С. Если в чеке появляется НДС 18%, значит либо программа явно передает этот налог, либо передает пустое/некорректное значение, которое касса интерпретирует как «налог по умолчанию» (обычно это первая строка в таблице налогов кассы).
Разберем по шагам, как локализовать и устранить ошибку.
Прежде чем приступать к правке кода, необходимо убедиться, что в самой 1С установлены правильные параметры. В УТ 10.3 признак плательщика НДС и режим налогообложения зависят от нескольких факторов:
УчетнаяПолитикаНалоговыйУчет. Флаг ОрганизацияЯвляетсяПлательщикомНДС должен быть снят.УТ 10.3 существует привязка розничных продаж к складам. Проверим справочник Склады. Для склада, с которого ведется продажа, должен быть установлен вид налога «ЕНВД».Для ККТ Viki Print критически важно использовать актуальную версию обработки обслуживания. Старые версии (например, Dreamkas_VikiPrint_8.2.epf) могут некорректно работать с онлайн-кассами с ФН. Необходимо скачать и установить обработку с поддержкой онлайн-ККТ, например Dreamkas_VikiPrint_onlineKKT_8.2.epf.
Эта обработка содержит обновленные методы взаимодействия с драйвером, которые учитывают требования 54-ФЗ и форматы ФФД 1.05/1.2.
Если настройки верны, но НДС все равно печатается, нам потребуется вмешаться в код формирования чека. Рассмотрим пример программного кода, который помогает принудительно установить ставку «Без НДС» для организаций на спецрежимах. Выясним причину: программа должна передать драйверу конкретный индекс налоговой ставки.
Найдем в обработке обслуживания функцию, отвечающую за печать строки. Обычно это ПечататьСтроку или НапечататьФискСтроку. Проанализируем фрагмент кода:
Функция ПечататьСтроку(Объект, Наименование, Количество, Цена, Скидка, Отдел, НДС) Экспорт
Результат = мНетОшибки;
ЗначениеСкидки = Окр(Количество * Цена * Скидка * 0.01, 2);
Сумма = Окр(Количество * Цена - ЗначениеСкидки, 2);
// Здесь мы проверяем, какая ставка НДС передается в драйвер.
// Если организация на ЕНВД, нам нужно передать значение,
// соответствующее "Без НДС" в таблице налогов ККТ.
Если Не Объект.ОборудованиеОбъект.НапечататьФискСтроку(Объект.ИДУстройства, Наименование, Количество, Цена, Сумма, Отдел, НДС) Тогда
Результат = мОшибкаНеизвестно;
Объект.ОборудованиеОбъект.ПолучитьОшибку(Объект.ОписаниеОшибки);
КонецЕсли;
Возврат Результат;
КонецФункции
Для того чтобы касса поняла, что налога нет, в переменную НДС (или СтавкаНДС) нужно подставить правильное числовое значение. Рассмотрим, как программно определить, является ли организация плательщиком НДС, и подставить нужное значение:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УчетнаяПолитикаНалоговыйУчетСрезПоследних.ОрганизацияНеЯвляетсяПлательщикомНДС
|ИЗ
| РегистрСведений.УчетнаяПолитикаНалоговыйУчет.СрезПоследних КАК УчетнаяПолитикаНалоговыйУчетСрезПоследних
|ГДЕ
| УчетнаяПолитикаНалоговыйУчетСрезПоследних.Организация = &Организация";
Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() И Выборка.ОрганизацияНеЯвляетсяПлательщикомНДС Тогда
// Для Вики Принт индекс "Без НДС" часто равен 4 или 6.
// Это значение передается напрямую в драйвер.
СтрокаЧека.СтавкаНДС = 4;
Иначе
// Стандартное получение ставки через менеджер оборудования
СтрокаЧека.СтавкаНДС = МенеджерОборудованияКлиентСервер.ПолучитьСтавкуНДСДляФискализацииЧека(СтрокаТовара.СтавкаНДС);
КонецЕсли;
Если программная передача индекса не помогает, необходимо проверить внутренние настройки самой ККТ Viki Print. Для этого используется сервисная утилита Fito. Проделаем следующие действия:
Важный момент: Если в 1С мы передаем индекс ставки, который отсутствует в таблице ККТ или не соответствует «Без НДС», касса по закону (ФФД) может выдать ошибку или заменить его на базовую ставку 20%.
Согласно формату фискальных данных 1.05 и выше, в каждом чеке должен передаваться тег 1055 — Система налогообложения. Если ваша организация использует ЕНВД, а в чеке печатается ОСНО (Общая система налогообложения), касса автоматически будет искать НДС.
В коде 1С при формировании объекта Чек (перед вызовом метода СформироватьЧек) убедимся, что передается правильный код СНО. Для ЕНВД это значение обычно равно 3 (в зависимости от классификации драйвера). Проанализируем, как это выглядит в объекте фискализации:
ПараметрыЧека.СистемаНалогообложения = 3; // Код для ЕНВД согласно документации Dreamkas
Если это свойство не заполнено, касса возьмет СНО из своих внутренних настроек «по умолчанию», которые задаются при регистрации (фискализации) аппарата. Если аппарат зарегистрирован на несколько СНО (например, ОСНО + ЕНВД), и вы не передаете конкретный код из 1С, ККТ может выбрать ОСНО и начислить НДС 20%.
Для решения проблемы с лишним НДС в чеках на Viki Print выполним следующие действия:
onlineKKT.УТ 10.3, чтобы документы изначально формировались без налоговых ставок.Используя комплексный подход (настройка 1С + настройка драйвера + настройка таблиц ККТ), мы добьемся корректного отображения данных в чеке и соответствия требованиям законодательства.