При настройке торгового оборудования в 1С часто возникает ситуация: организация работает на упрощенной системе налогообложения (УСН) без налога на добавленную стоимость, в номенклатуре и документах чека везде указано «Без НДС», однако при выводе фискального чека на аппарате АТОЛ упорно печатается ставка НДС 18% (или 20%).
Проанализируем архитектуру взаимодействия программы 1С с прошивками и драйверами АТОЛ, выясним причины такого поведения и разберем по шагам все возможные способы решения.
Рассмотрим, почему кассовый аппарат подставляет ставку 18% даже тогда, когда из 1С передается значение 0 или флаг печати налога отключен:
0 или 10, драйвер считает, что указан некорректный идентификатор, и автоматически сбрасывает налог на значение по умолчанию — первую позицию в таблице ККТ (код 1 — НДС 18%/20%).НапечататьФискСтроку, где система налогообложения (СНО) не передается в явном виде. В таком случае касса берет базовую СНО из настроек (как правило, ОСНО), где расчет НДС обязателен.Если оборудование подключено через старую обработку обслуживания и печать выполняется прямым вызовом метода драйвера НапечататьФискСтроку, посмотрим на вызов функции:
Ответ = ОбъектДрайвера.НапечататьФискСтроку(
ПараметрыПодключения.ИДУстройства,
Наименование,
Количество,
Цена,
Сумма,
НомерСекции,
СтавкаНДС
);
Параметр СтавкаНДС должен содержать внутренний код ставки из прошивки ККТ:
Разберем доработку кода перед вызовом функции печати строки. Заменим прямое числовое значение ставки на сопоставление с кодами АТОЛ:
Если СтрокаЧека.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
КодСтавкиККТ = 4; // Внутренний код "Без НДС" в таблице ККТ
ИначеЕсли СтрокаЧека.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
КодСтавкиККТ = 3;
ИначеЕсли СтрокаЧека.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
КодСтавкиККТ = 2;
Иначе
КодСтавкиККТ = 1;
КонецЕсли;
Ответ = ОбъектДрайвера.НапечататьФискСтроку(
ПараметрыПодключения.ИДУстройства,
СтрокаЧека.Номенклатура.Наименование,
СтрокаЧека.Количество,
СтрокаЧека.Цена,
СтрокаЧека.Сумма,
НомерСекции,
КодСтавкиККТ
);
Если доработка кода нежелательна, настроим поведение аппарата через утилиту управления драйвером. Разберем пошаговый порядок действий:
После этой настройки при передаче значения налога 0 драйвер автоматически подставит значение из секции — «Без НДС».
Штатным и наиболее стабильным решением для современных версий конфигураций (например, «1С:Розница») является перенастройка оборудования на актуальный стандарт требований БПО (Библиотеки подключаемого оборудования):
В режиме «ККТ с передачей данных» программа 1С передает на кассу структурированный XML-пакет, в котором ставки налога передаются строковыми литералами ("none" — Без НДС, "0", "10", "20"), а СНО передается корректно, что полностью исключает расчет лишних налогов.
Если кассовый аппарат используется без фискального накопителя исключительно в качестве чекопечатающей машины (принтера документов), вызов метода НапечататьФискСтроку избыточен. Вместо этого используем нефискальные методы драйвера, которые выводят произвольный текст без валидации налоговых ставок:
// Открытие нефискального чека
ОбъектДрайвера.ОткрытьНефискДокумент(ПараметрыПодключения.ИДУстройства);
// Вывод произвольных строк текста
ОбъектДрайвера.НапечататьСтроку(ПараметрыПодключения.ИДУстройства, "Товар: " + СтрокаЧека.Номенклатура.Наименование);
ОбъектДрайвера.НапечататьСтроку(ПараметрыПодключения.ИДУстройства, "Кол-во: " + СтрокаЧека.Количество + " Сумма: " + СтрокаЧека.Сумма);
ОбъектДрайвера.НапечататьСтроку(ПараметрыПодключения.ИДУстройства, "НДС: Без НДС");
// Закрытие нефискального документа и отрезка
ОбъектДрайвера.ЗакрытьНефискДокумент(ПараметрыПодключения.ИДУстройства);
Такой подход позволяет полностью контролировать содержимое чека и исключить автоматическое добавление служебных строк с налогами прошивкой ККТ.