При работе с контрольно-кассовой техникой (ККТ) и программным обеспечением 1С, особенно со старыми версиями, такими как 1С 7.7, часто возникают вопросы по корректному отображению фискальных данных в чеке. Одним из таких вопросов является детализация информации о налоге на добавленную стоимость (НДС) по каждой товарной позиции. В этом руководстве мы подробно разберем ситуацию, когда ККТ АТОЛ 25Ф и 30Ф не печатают сумму НДС для каждой позиции, а отображают только итоговую сумму по чеку.
Мы проанализируем возможные причины такого поведения, рассмотрим попытки решения, предпринятые пользователями, и выясним, соответствует ли текущее отображение НДС законодательным требованиям. Давайте вместе шаг за шагом разберем эту непростую задачу.
Мы столкнулись с ситуацией, когда при использовании ККТ АТОЛ моделей 25Ф и 30Ф совместно с драйвером ККТ версии 10.8.1.0 и конфигурацией 1С 7.7 "Торговля и Склад", в печатаемом чеке отсутствует сумма НДС по каждой отдельной товарной или услуговой позиции. Вместо ожидаемой детализации, мы видим только общую сумму НДС, рассчитанную за весь чек. Это вызывает вопросы у пользователей, которые привыкли к более подробному отображению налоговых данных или считают, что это необходимо по закону.
Важным наблюдением является то, что поведение ККТ одинаково на обеих моделях, несмотря на различия в настройках. Так, на АТОЛ 25Ф в "Тесте драйвера ККТ", в разделе "Свойства" – "Параметры ККТ" – "Налоги", параметр "Передавать реквизит Сумма НДС за товар" оказывается неактивным. В то же время на АТОЛ 30Ф этот же параметр активен и даже выбран, однако результат на чеке остается неизменным – печатается только ставка НДС по позиции, но не ее сумма.
Это наблюдение сразу наводит нас на мысль, что причина проблемы может быть глубже, чем просто некорректная настройка параметра или ошибка в коде 1С. Возможно, это связано с прошивкой ККТ, особенностями работы драйвера или даже с законодательными требованиями.
Прежде чем перейти к глубинному анализу, давайте рассмотрим, какие попытки решения проблемы были предприняты и какие диагностические шаги мы можем использовать.
Пользователи пытались программно управлять параметрами драйвера ККТ через COM-объект, используя метод setParam. В частности, были сделаны попытки установить следующие параметры:
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_SUM, СписокТоваров.НДССумм): Этот параметр, по задумке, должен был передавать конкретную сумму НДС для текущей позиции.Объект.setParam(Объект.LIBFPTR_PARAM_TAX_MODE, Объект.LIBFPTR_TM_POSITION): Установка режима налогообложения по позиции, что логично для детализации.Объект.setParam(Объект.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, "False"): Попытка отключить использование только типа налога, подразумевая возможность передачи и суммы.Однако все эти методы к положительному результату не привели, что было подтверждено автором темы. Сумма НДС по позиции по-прежнему не отображалась в чеке.
Представим себе типичный фрагмент кода, который мы могли бы использовать в 1С 7.7 для передачи информации о товаре и НДС в ККТ АТОЛ. Этот код демонстрирует попытки установить различные параметры налогообложения:
// Установка режима налогообложения, при котором налоги применяются к каждой позиции
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_MODE, Объект.LIBFPTR_TM_POSITION);
// Определение ставки НДС для текущей позиции и установка соответствующих параметров
Если (СписокТоваров.НДС = 20) Тогда
// Если НДС 20%, устанавливаем отдел 3 и тип налога LIBFPTR_TAX_VAT20
Объект.setParam(Объект.LIBFPTR_PARAM_DEPARTMENT, 3 );
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT20);
ИначеЕсли (СписокТоваров.НДС = 10) Тогда
// Если НДС 10%, устанавливаем отдел 2 и тип налога LIBFPTR_TAX_VAT10
Объект.setParam(Объект.LIBFPTR_PARAM_DEPARTMENT, 2 );
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT10);
ИначеЕсли (СписокТоваров.НДС = 10/110) Тогда // Расчетный НДС 10/110
// Если НДС расчетный 10/110, устанавливаем отдел 4 и тип налога LIBFPTR_TAX_VAT110
Объект.setParam(Объект.LIBFPTR_PARAM_DEPARTMENT, 4 );
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT110);
ИначеЕсли (СписокТоваров.НДС = 0) Тогда
// Если НДС 0%, устанавливаем отдел 5 и тип налога LIBFPTR_TAX_VAT0
Объект.setParam(Объект.LIBFPTR_PARAM_DEPARTMENT, 5 );
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT0);
Иначе
// Для прочих случаев, например, старого НДС 18% или других неопределенных ставок
Объект.setParam(Объект.LIBFPTR_PARAM_DEPARTMENT, 1 );
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT18);
КонецЕсли;
// Закомментированный параметр, который также не привел к результату
// Объект.setParam(Объект.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, "False");
// Попытка передать сумму НДС по текущей позиции.
// Как мы выяснили далее, это не влияет на печать детализации суммы НДС по позиции в чеке.
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_SUM, СписокТоваров.НДССумм);
В этом примере мы видим, что программист методично пытался настроить передачу налоговых данных. Однако, несмотря на все усилия, желаемый результат не был достигнут.
Одним из важнейших шагов в диагностике проблемы является использование "Теста драйвера ККТ", который поставляется производителем. Когда мы сталкиваемся с проблемами печати, первое, что нам следует сделать, – это попробовать воспроизвести проблему вне 1С. В нашем случае, автор темы подтвердил, что даже при печати через "Тест драйвера ККТ" сумма НДС по позиции не отображается, печатается только ставка.
Это наблюдение критически важно, так как оно исключает ошибку в коде 1С или конфигурации. Если "Тест драйвера" демонстрирует то же поведение, значит, причина кроется либо в самом драйвере, либо в прошивке ККТ, либо в заложенной производителем логике, соответствующей законодательным нормам.
Перейдем к самому важному аспекту – законодательству. Часто наши представления о том, что "должно" печататься в чеке, могут расходиться с реальными требованиями. Давайте разберем, что именно требует закон.
Согласно действующему законодательству о применении контрольно-кассовой техники (Федеральный закон № 54-ФЗ от 22.05.2003 "О применении контрольно-кассовой техники при осуществлении расчетов в Российской Федерации"), кассовый чек или бланк строгой отчетности должен содержать ряд обязательных реквизитов. Среди них, касательно товаров и НДС, указаны следующие:
Внимательно проанализируем эти формулировки. Мы видим, что для каждой позиции обязательно указывается ставка НДС. Однако, когда речь заходит о сумме НДС, законодательство требует ее указания "по этим ставкам", что подразумевает суммирование по каждой ставке за весь расчет (чек), а не детализацию суммы НДС для каждой отдельной позиции. То есть, необходимо показать, сколько всего НДС было начислено по ставке 20%, сколько по ставке 10% и так далее, но не обязательно показывать, сколько именно НДС 20% входило в стоимость конкретного товара "Молоко".
Важный вывод: На основе анализа законодательства, мы можем сделать вывод, что требование печатать сумму НДС по каждой позиции в чеке не является обязательным. Производители ККТ, в том числе АТОЛ, разрабатывают свои устройства в строгом соответствии с этими нормами. Таким образом, поведение, при котором печатается только ставка НДС по позиции и общая сумма НДС по каждой ставке за весь чек, полностью соответствует закону.
Это объясняет, почему, несмотря на наличие параметра LIBFPTR_PARAM_TAX_SUM в драйвере, ККТ не выводит эту информацию в детализации по позиции. Вероятно, этот параметр используется для внутренней обработки, валидации данных или для расчетов итоговой суммы НДС, но не для прямого вывода в детализированном виде.
Помимо законодательных аспектов, на работу ККТ влияют версии драйверов и прошивок. Мы используем драйвер АТОЛ версии 10.8.1.0. Важно понимать, что компания АТОЛ регулярно выпускает обновления драйверов и прошивок для своих ККТ, добавляя новый функционал, исправляя ошибки и обеспечивая соответствие меняющимся требованиям законодательства (например, появление новых ставок НДС).
LIBFPTR_PARAM_TAX_SUM, касса может не использовать эту информацию для прямой печати в детализации, а лишь для внутренних проверок и расчета итоговых сумм по чеку.Рекомендация: Мы настоятельно рекомендуем проверить и обновить прошивку ваших ККТ АТОЛ 25Ф и 30Ф до актуальной версии, а также обновить драйвер АТОЛ до самой свежей доступной версии (например, 10.10.6.0 или выше). Это обеспечит максимальную совместимость, стабильность и доступность всех официально поддерживаемых функций, даже если это не изменит поведение печати суммы НДС по позициям.
Для корректной работы с фискальными данными всегда важно убедиться, что базовые настройки налоговых ставок в "Тесте драйвера ККТ" выполнены правильно. Эти настройки определяют, как фискальный регистратор будет интерпретировать и обрабатывать передаваемые ему налоговые данные.
Правильная настройка этих параметров гарантирует, что ККТ будет верно обрабатывать налоговые данные, которые мы передаем из 1С, и корректно формировать итоговые суммы НДС по чеку.
Хотя 1С 7.7 является устаревшей платформой, ее по-прежнему активно используют многие предприятия. Важно понимать, что для работы с современными ККТ и их драйверами (версии 10 и выше) из 1С 7.7 требуется использование COM-объектов. Код, который мы рассмотрели ранее, является хорошим примером такого взаимодействия.
Мы видим, что автор темы корректно использует методы setParam для передачи различных параметров: режим налогообложения (LIBFPTR_PARAM_TAX_MODE), отдел (LIBFPTR_PARAM_DEPARTMENT) и тип налога (LIBFPTR_PARAM_TAX_TYPE). Эти параметры являются основными для указания налоговых характеристик каждой позиции. Передача этих данных позволяет ККТ правильно идентифицировать ставку НДС для каждой позиции и корректно рассчитать общие суммы НДС по каждой ставке в конце чека.
Несмотря на то, что попытка передать конкретную сумму НДС по позиции через LIBFPTR_PARAM_TAX_SUM не приводит к ее печати в детализации, сам факт ее передачи может быть полезен для внутренней логики ККТ, например, для дополнительной проверки или учета. Главное, что мы обеспечиваем ККТ всей необходимой информацией о ставках НДС для каждой позиции.
Подводя итоги нашего комплексного анализа, мы можем сделать несколько ключевых выводов относительно печати суммы НДС по каждой позиции в чеке на ККТ АТОЛ 25Ф/30Ф из 1С 7.7:
LIBFPTR_PARAM_TAX_SUM, как правило, не приводят к желаемому результату в детализации чека.Итоговая рекомендация: Мы рекомендуем не пытаться добиться печати суммы НДС по каждой позиции в чеке, так как это не является обязательным требованием по законодательству и не предусмотрено стандартным функционалом большинства современных фискальных регистраторов. Вместо этого, сосредоточьтесь на обеспечении корректной передачи ставок НДС по каждой позиции из 1С в ККТ. Это гарантирует правильный расчет и отображение общих сумм НДС по чеку, что полностью соответствует всем законодательным нормам.
Мы надеемся, что этот подробный анализ помог вам разобраться в причинах такого поведения ККТ АТОЛ и понять, что в данном случае "отсутствие" функционала на самом деле является "соответствием" требованиям.