При работе с торговым оборудованием в системе 1С программисты и системные администраторы часто сталкиваются с аппаратными ошибками ККТ (контрольно-кассовой техники). Одной из наиболее распространенных и неприятных проблем при оформлении продаж является ошибка FFFFFFF7h «Неверная налоговая ставка (20,00%)» (или аналогичные сообщения для ставок 18%, 10% и т.д.). Особенно остро эта проблема проявляется на фискальных регистраторах семейства «Штрих-М» (например, «Штрих-ФР-К», «Штрих-ON-LINE», «Штрих-М-01Ф») при использовании неактуальных версий конфигураций, таких как 1С:Управление торговлей ред. 10.3 на обычных формах.
В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем внутреннюю механику взаимодействия учетной системы с драйвером ККТ и рассмотрим пошаговое руководство по окончательному устранению этой ошибки.
Для того чтобы успешно решить проблему, нам необходимо понять физический смысл ошибки и логику обмена данными между 1С и кассовым аппаратом. Код FFFFFFF7h в системе команд драйвера «Штрих-М» (в десятичном представлении это значение -9) буквально означает: «Неверный диапазон параметров» или «Неверное значение параметра».
Когда учетная система отправляет команду на регистрацию позиции в чеке, она передает в драйвер ККТ информацию о товаре, его цене, количестве и применяемой налоговой ставке. Ошибка возникает тогда, когда переданный из 1С идентификатор налога не совпадает с тем, что касса ожидает увидеть в своих внутренних настройках.
Давайте проанализируем внутреннее устройство таблиц фискального регистратора «Штрих-М», которые отвечают за обработку налогов:
2000 (что математически интерпретируется кассой как 20.00%) и текстовое наименование «НДС 20%».0, то касса самостоятельно рассчитывает величину налога на основе данных из своей Таблицы 6.1, то расчет налогов полностью делегируется внешней программе (1С), а касса лишь фиксирует готовые суммы, переданные извне.Конфликт и последующая ошибка FFFFFFF7h возникают из-за разницы в форматах передачи данных. В старых версиях обработок обслуживания (написанных под требования ФФД 1.0) 1С пыталась передать ставку налога прямым числовым значением (например, числом 18 или 20) либо программно перезаписать Таблицу 6 непосредственно перед печатью чека. В современных прошивках ККТ (поддерживающих ФФД 1.05 и ФФД 1.2) кассовый аппарат ожидает получить не само число процентов, а конкретный индекс (код) налоговой ставки (например: 1 — НДС 20%, 2 — НДС 10%, 4 — Без НДС). Попытка передать туда число «20.00» вместо ожидаемого индекса приводит к выходу параметра за допустимый диапазон и генерации ошибки драйвером.
Некоторые разработчики пытаются решить проблему «в лоб» — путем ручной корректировки массивов ставок в коде старых обработок обслуживания. Например, находят в кодовой базе инициализацию массива мНДС и заменяют устаревшую ставку 18% на 20%:
// Попытка ручного исправления в старом модуле
мНДС = Новый Массив;
мНДС.Добавить(0);
мНДС.Добавить(10);
мНДС.Добавить(20); // Заменили 18.00 на 20.00 напрямую
Рассмотрев этот пример, мы видим, что такое исправление не дает стабильного результата. Проблема кроется в том, что старый тип оборудования («Фискальный регистратор») общается с кассой напрямую через низкоуровневые функции старого драйвера. При открытии смены или пробитии первого чека касса может автоматически сбросить или перезаписать эти параметры, вернув ошибку при первой же продаже.
Для гарантированного устранения ошибки нам необходимо перевести взаимодействие 1С и ККТ на современные стандарты БПО (Библиотеки подключаемого оборудования), исключив прямое программирование таблиц кассы из старых обработок. Рассмотрим этот процесс по шагам.
Основная причина сбоя — использование устаревшей обработки обслуживания (например, ShtrihM_FR_K.epf). Нам необходимо заменить её на актуальную обработку, работающую по стандарту «ККТ с передачей данных».
ShtrihMKtt.epf (она входит в состав современных релизов конфигураций или БПО).ShtrihMKtt.epf в справочник обработок обслуживания.Новая обработка общается с ККТ посредством стандартизированных XML-пакетов. Она больше не пытается программировать таблицы кассы «на лету», а передает стандартные идентификаторы ставок, которые локальный драйвер автоматически транслирует в корректные индексы для фискального накопителя (ФН).
После добавления новой обработки нам необходимо пересоздать карточку торгового оборудования в системе:
ShtrihMKtt.epf.После создания нового устройства обязательно зайдите в его параметры для настройки налогов:
Даже правильная обработка обслуживания в 1С не сможет передать верные XML-пакеты, если на рабочем месте установлена старая версия драйвера ККТ. Проанализируем требования к программному обеспечению:
Иногда при попытке настроить таблицы кассы вручную через стандартную утилиту «Тест драйвера ККТ» пользователи сталкиваются со смежной ошибкой: FFFFFFF8h («Смена открыта, программирование невозможно»).
Посмотрим, как обойти это ограничение:
2000 (соответствует 20.00%), при необходимости отредактируйте его и запишите изменения обратно в кассу.Использование связки из актуального драйвера, современной обработки ShtrihMKtt.epf и правильного типа подключения «ККТ с передачей данных» гарантирует полное избавление от ошибки FFFFFFF7h и обеспечивает стабильную работу кассового узла в соответствии со всеми требованиями законодательства.