Ситуация, когда в документе «Приходный кассовый ордер» (ПКО) установлена ставка «Без НДС», а фискальный регистратор упорно печатает в чеке «НДС 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), но результат на бумаге неверен, необходимо проверить внутренние таблицы ККТ. Для этого воспользуемся утилитой «Тест драйвера ККМ».
Выполним следующие действия для проверки таблиц:
Проанализируем ситуацию: если в Таблице Налогов под номером 6 значится «Без НДС», то в Таблице Секций для Секции 4 нужно проставить значение 6. После внесения изменений обязательно нажимаем кнопку «Применить» или «Записать таблицу».
С переходом на формат фискальных данных (ФФД) 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 в обсуждении), иногда настройки драйвера просто «не подхватываются» оборудованием из-за программного сбоя или устаревшей версии ПО. Рассмотрим алгоритм действий, если настройки в таблицах верны, но чек все равно выходит с ошибкой:
fptr10.log или FPrnM1C.log).Выясним причину через лог-файл драйвера. Если в логе вы видите команду LIBFPTR_PARAM_TAX_TYPE со значением 1, значит 1С сама посылает команду печатать НДС. Если в логе стоит значение 6 (Без НДС), а на бумаге 18%, значит проблема исключительно внутри настроек кассы (Таблица Налогов).
Подводя итог, можно сказать, что решение проблемы требует комплексного подхода: проверки программного соответствия Объект.Department в коде 1С и физической настройки Секций и Налогов в драйвере ККТ. Совместная работа программиста и специалиста по кассовому оборудованию позволяет решить эту задачу в кратчайшие сроки.