Как установить систему налогообложения «Патент» в чеке при работе с 1С 7.7 и ККТ Атол?

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

При переходе на патентную систему налогообложения (ПСН) многие пользователи сталкиваются с тем, что кассовый аппарат продолжает печатать в чеках старый режим налогообложения (чаще всего ЕНВД), несмотря на проведенную перерегистрацию самой кассы. Давайте разберемся, почему это происходит и как программно исправить ситуацию в конфигурации 1С 7.7.

Причина проблемы: приоритет настроек

Основная причина кроется в архитектуре взаимодействия 1С с фискальным регистратором через драйвер. Даже если в настройках драйвера ККТ вы установили СНО «по умолчанию», внешняя обработка 1С при формировании пакета данных (XML) для отправки на печать может принудительно передавать жестко заданный параметр системы налогообложения. Если в коде 1С этот параметр прописан как константа, он будет иметь приоритет над настройками самого устройства.

Разбор процесса передачи данных

Для корректной работы с 54-ФЗ необходимо передавать параметр TaxVariant в составе XML-пакета, который формирует обработка обслуживания. Согласно спецификации драйверов Атол, для каждого режима налогообложения предусмотрен свой числовой код:

В вашем случае в коде обработки, отвечающей за формирование XML, скорее всего, параметр TaxVariant жестко установлен в значение 3 (ЕНВД), что и приводит к неверной печати в чеке.

Пошаговое решение проблемы

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

  1. Найдите процедуру формирования XML. Откройте обработку обслуживания (файл .ert), через которую 1С взаимодействует с кассой. Найдите место, где формируется структура XMLParameters.
  2. Измените параметр TaxVariant. В блоке, где создается атрибут TaxVariant, замените значение с «3» на «5».

Пример корректного формирования части XML-пакета:


XMLParameters = XMLCheckPackage.СоздатьПодчиненныйЭлемент("Parameters");
Атрибут(XMLParameters, "PaymentType", ТипРасчета);
// Устанавливаем 5 для Патента вместо жесткого 3
Атрибут(XMLParameters, "TaxVariant", 5);

Как сделать решение гибким?

Если вы хотите, чтобы система налогообложения выбиралась динамически, не рекомендуется «зашивать» цифру 5 напрямую в код. Рассмотрим, как правильно прокинуть переменную через параметры вызова:

  1. Измените функцию печати чека в обработке обслуживания, добавив параметр ПУП (или СистемаНалогообложения).
  2. Передайте этот параметр из глобального модуля (функция глФРПечататьЧек) в процедуру формирования XML.

Пример внесения изменений в процедуру:


Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, ..., СистемаНалогообложения)
    // ... логика формирования XML
    Атрибут(XMLParameters, "TaxVariant", СистемаНалогообложения);
    // ... остальной код
КонецФункции

Проверка результата

После внесения изменений в код, обязательно выполните следующие действия:

Применяя этот подход, вы сможете динамически управлять режимами налогообложения, если ваше предприятие совмещает несколько систем или переходит с одной на другую.

← На главную