Переход на ставку НДС 20% стал серьезным испытанием для многих технических специалистов. Одной из наиболее распространенных проблем при работе с оборудованием Штрих-М является ошибка "FFFFFFF8h, Invalid Tax Value: 20". Ситуация осложняется тем, что даже при обновлении драйверов и конфигурации 1С, фискальный регистратор может продолжать «отказываться» принимать новую ставку. В этой статье мы подробно разберем, как привести систему в рабочее состояние, проанализируем причины конфликтов между 1С и драйвером, а также рассмотрим технические нюансы регистрации необходимых библиотек.
Ошибка Invalid Tax Value: 20 буквально означает, что кассовый аппарат или его драйвер не распознают значение «20» как допустимый идентификатор налоговой ставки. Давайте проанализируем ситуацию: в протоколе обмена данными со Штрих-М налоговые ставки часто передаются не как проценты, а как индексы (порядковые номера) из внутренней таблицы налогов ККТ (Таблица №6). Если в этой таблице на позиции, которую ожидает драйвер, нет ставки 20%, или если драйвер слишком старый и не знает, что «20» нужно сопоставлять с определенным индексом, возникает ошибка.
Рассмотрим основные факторы, влияющие на это поведение:
Первым делом нам необходимо убедиться, что в системе установлен актуальный драйвер. Как показывает практика, наиболее стабильными для перехода стали версии 4.14.747 и выше. Однако просто установить драйвер в ОС недостаточно — 1С должна использовать правильную внешнюю компоненту.
Разберем процесс регистрации библиотеки вручную. Если вы используете современную версию БПО (Библиотека подключаемого оборудования), 1С пытается сама загрузить нужную библиотеку, но иногда возникают конфликты версий. Попробуем зарегистрировать библиотеку SMDrvFR1CLib24.dll, которая входит в комплект поставки новых драйверов:
C:\Program Files (x86)\SHTRIH-M\DRVFR 4.14\Bin).SMDrvFR1CLib24.dll (в некоторых версиях может называться SMDrvFR1C22.dll, но для НДС 20% важна именно поддержка новых методов).regsvr32 SMDrvFR1CLib24.dll.После этого в 1С в справочнике "Драйверы оборудования" необходимо обновить объект драйвера, выбрав путь к установленным файлам или загрузив актуальный zip-архив с сайта 1С/Штрих-М.
Если драйвер обновлен, но ошибка сохраняется, нам нужно проверить внутренние таблицы кассы. Сделаем это через программу "Тест драйвера ККТ". Проанализируем Таблицу №6 (Налоги). Для корректной работы с 1С рекомендуется следующий порядок:
Важный нюанс: В некоторых «переходных» прошивках Штрих-М реализовал механизм автоматической подмены. Если касса видит ставку 18%, она сама печатает 20%, чтобы обеспечить совместимость со старым софтом. Однако это работает только в том случае, если дата в кассе — 1 января 2019 года или позже. Рассмотрим пример кода в 1С, который может вызывать ошибку, если мы передаем число 20 напрямую в старый драйвер:
// Пример формирования структуры для чека
ОбъектДрайвера.СтавкаНДС = 20; // Старый драйвер может не принять это значение
// Вместо этого в переходный период часто использовалась логика:
Если ДатаЧека >= '20190101' Тогда
СвойстваЧека.Ставка = 20;
Иначе
СвойстваЧека.Ставка = 18;
КонецЕсли;
Иногда после обновления драйвера до версии 731 или 747 вместо ошибки Invalid Tax появляется ошибка 33h. Это происходит потому, что новый драйвер пытается общаться с кассой по расширенному протоколу, который касса еще не поддерживает (например, из-за старой прошивки или работы в режиме ФФД 1.0 вместо 1.05).
Чтобы выяснить причину, проанализируем следующие действия:
В исключительных случаях, если обновить прошивку ККТ прямо сейчас невозможно, а работать нужно, программисты прибегают к «хитрости» — подмене передаваемого значения. Рассмотрим, как это реализовано в обработках обслуживания:
В коде обработки, перед вызовом метода СформироватьЧек, выполняется проверка. Если программа передает ставку 20%, а касса понимает только индекс, соответствующий старой ставке 18%, значение подменяется. При этом, благодаря прошивке ККТ, в самом печатном чеке и в ОФД будет уходить корректная ставка 20%, так как касса сама выполнит сопоставление по дате.
Функция ПодготовитьДанныеНалога(СтавкаНДС)
Если СтавкаНДС = 20 Тогда
// Если прошивка ККТ настроена на автоматическую замену 18 на 20
Возврат 18;
КонецЕсли;
Возврат СтавкаНДС;
КонецФункции
Внимание: Этот метод является временным и крайне не рекомендуется для постоянного использования. Правильный путь — обновление прошивки до версии, которая официально поддерживает тэг 20% и ФФД 1.05.
В процессе настройки может возникнуть сопутствующая ошибка: "Кассир не был запрограммирован ранее". Она часто появляется при попытке закрыть смену или пробить чек после обновления драйверов. Выясним причину: в новых протоколах передачи данных поле «Кассир» стало обязательным и должно содержать ИНН. Если вы передаете просто строку с фамилией, драйвер может вернуть ошибку инициализации.
Убедимся, что в коде 1С передаются оба параметра:
ПараметрыФискализации.Вставить("ИмяКассира", "Иванов И.И.");
ПараметрыФискализации.Вставить("ИННКассира", "123456789012");
Подводя итог, можно составить краткий чеклист для исправления проблем с НДС 20% на Штрих-М:
SMDrvFR1CLib24.dll.Соблюдение этих шагов позволит избавиться от ошибок Invalid Tax Value и обеспечит корректную передачу данных в налоговую службу через ОФД.