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