Как исправить неверную ставку НДС (18%) при печати чека из ПКО в 1С 7.7

Программист 1С v7.7 Налоговый учет Торговля и дистрибуция
← На главную

Ситуация, когда в документе «Приходный кассовый ордер» (ПКО) установлена ставка «Без НДС», а фискальный регистратор упорно печатает в чеке «НДС 18%», является классической для платформы 1С 7.7, особенно при работе с кассами АТОЛ. Эта проблема чаще всего кроется в несоответствии настроек внутренней таблицы налогов кассового аппарата и параметров, которые передает 1С через драйвер. Разберем пошагово, как проанализировать ситуацию и привести печать чека в соответствие с учетными данными.

Анализ программного кода обработки печати

Для начала проанализируем, каким образом 1С 7.7 передает информацию о налогах в фискальный регистратор. В комплексных конфигурациях и Бухгалтерии 7.7 за печать чеков обычно отвечает внешняя обработка (например, FR_COMM.ert) или функции в глобальном модуле (глФРПечататьЧек). Выясним, как формируется список товаров и какие параметры передаются объекту драйвера.

Рассмотрим типичный фрагмент кода, который отвечает за сопоставление ставки НДС из документа и номера отдела (секции) в кассе:


// В настройках ФР надо настроить ставки:
// Налог 1 = 18% - НДС 18%
// Налог 2 = 10% - НДС 10%
// Налог 3 = 20% - НДС 20%
// Налог 4 = 0% - без НДС

Если СписокТоваров.НДС = 18 Тогда
    Объект.Department = 1;
ИначеЕсли СписокТоваров.НДС = 10 Тогда
    Объект.Department = 2;
ИначеЕсли СписокТоваров.НДС = 20 Тогда
    Объект.Department = 3;
Иначе
    Объект.Department = 4;
КонецЕсли;

В данном примере мы видим, что программа использует свойство Department (Отдел) для управления налоговой ставкой. Это означает, что в самой кассе в таблице «Секции» для каждого отдела жестко прописан номер налога. Если программа передает Department = 4, а в настройках кассы для 4-й секции указан налог №1 (18%), то в чеке будет напечатано 18%. Важно понимать: касса сама решает, какой налог печатать, основываясь на номере секции, которую ей «скормил» драйвер.

Настройка драйвера фискального регистратора (АТОЛ)

Если программный код отрабатывает верно и передает нужный номер секции (например, 4), но результат на бумаге неверен, необходимо проверить внутренние таблицы ККТ. Для этого воспользуемся утилитой «Тест драйвера ККМ».

Выполним следующие действия для проверки таблиц:

  1. Запустим «Тест драйвера ККМ» и перейдем в раздел «Настройка свойств».
  2. Нажмем кнопку «Параметры оборудования».
  3. Перейдем на вкладку «Таблицы».
  4. Найдем Таблицу №2 «Секции». Проанализируем колонку «Налог». Если мы хотим, чтобы через 4-ю секцию печаталось «Без НДС», в этой ячейке должен стоять индекс налога, соответствующий значению «Без НДС».
  5. Найдем Таблицу №6 «Налоги». Посмотрим, под каким номером зарегистрирована ставка 0% или «Без НДС». Обычно это индекс 4, 5 или 6 в зависимости от версии прошивки и ФФД.

Проанализируем ситуацию: если в Таблице Налогов под номером 6 значится «Без НДС», то в Таблице Секций для Секции 4 нужно проставить значение 6. После внесения изменений обязательно нажимаем кнопку «Применить» или «Записать таблицу».

Проблема соответствия ФФД 1.05 и новых налоговых ставок

С переходом на формат фискальных данных (ФФД) 1.05 индексы налогов в кассах АТОЛ изменились. Часто старые обработки 1С 7.7 продолжают слать индекс 4, который в новых прошивках может отвечать за совершенно другой налог. Рассмотрим современные индексы налогов для АТОЛ:

Если ваша организация работает без НДС, в коде 1С необходимо принудительно установить правильный индекс. Попробуем модернизировать процедуру печати чека в ПКО, чтобы она всегда выбирала корректную секцию:


Процедура СделатьЧек()
    // ... инициализация объекта драйвера ...
    Список.ВыбратьСтроки();
    Пока Список.ПолучитьСтроку() = 1 Цикл
        Объект.Name = Список.ТовНаим;
        Объект.Price = Список.Цена;
        Объект.Quantity = Список.Количество;
        
        // Принудительно задаем секцию 6 для работы без НДС
        // Убедитесь, что в драйвере секция 6 настроена на налог "Без НДС"
        Объект.Department = 6; 
        
        Объект.Registration();
    КонецЦикла;
    // ... закрытие чека ...
КонецПроцедуры

Установка системы налогообложения (СНО)

Иногда касса печатает НДС просто потому, что в её настройках по умолчанию выбрана «Общая система налогообложения» (ОСН). Даже если вы передаете признак отсутствия налога, касса может выдавать ошибку или печатать 18%. Для исправления проанализируем, передается ли в драйвер тег 1055 (Система налогообложения).

В коде 1С это реализуется следующим образом:


// Применяемая система налогообложения в чеке:
// ОСН - 1; УСН доход - 2; УСН доход-расход - 4; ЕНВД - 8; ЕСН - 16; ПСН - 32;
Объект.AttrNumber = 1055;
Объект.AttrValue = 8; // Например, для ЕНВД
Объект.WriteAttribute();

Важно помнить, что эти атрибуты должны передаваться до регистрации первой позиции в чеке или непосредственно в момент открытия чека. Если ваша касса зарегистрирована на несколько систем налогообложения, игнорирование этого параметра приведет к тому, что ФР будет использовать систему «по умолчанию», в которой может быть активен НДС 18%.

Обновление драйверов и техническое обслуживание

Как показывает практика (сообщение 94 в обсуждении), иногда настройки драйвера просто «не подхватываются» оборудованием из-за программного сбоя или устаревшей версии ПО. Рассмотрим алгоритм действий, если настройки в таблицах верны, но чек все равно выходит с ошибкой:

  1. Обновление драйвера: Убедитесь, что используется версия драйвера АТОЛ не ниже 8.16. Более ранние версии могут некорректно работать с ФФД 1.05.
  2. Перезагрузка оборудования: После записи таблиц в память кассы обязательно выключите и включите фискальный регистратор.
  3. Проверка через эмулятор: Если физически портить чеки накладно, используйте режим «Работа без чека» или тестовый прогон через драйвер, чтобы увидеть, какие данные уходят в порт (логи драйвера fptr10.log или FPrnM1C.log).

Выясним причину через лог-файл драйвера. Если в логе вы видите команду LIBFPTR_PARAM_TAX_TYPE со значением 1, значит 1С сама посылает команду печатать НДС. Если в логе стоит значение 6 (Без НДС), а на бумаге 18%, значит проблема исключительно внутри настроек кассы (Таблица Налогов).

Подводя итог, можно сказать, что решение проблемы требует комплексного подхода: проверки программного соответствия Объект.Department в коде 1С и физической настройки Секций и Налогов в драйвере ККТ. Совместная работа программиста и специалиста по кассовому оборудованию позволяет решить эту задачу в кратчайшие сроки.

← На главную