Почему в чеках ККМ после обновления УТ 10.3.72 вместо Патента выводится УСН и выделяется НДС?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Налоговый учет Торговля и дистрибуция
← На главную

Переход на новые релизы конфигурации «Управление торговлей 10.3» (начиная с 10.3.72.1) принес значительные изменения в механизмах взаимодействия с торговым оборудованием. Эти изменения связаны с подготовкой к работе по ФФД 1.2 и масштабной переработкой общего кода. Однако в типовом решении возникли ошибки, из-за которых в чеках ККМ некорректно определяется система налогообложения (вместо «Патента» печатается «УСН доход»), а также ошибочно выделяется НДС, даже если организация освобождена от него. Рассмотрим, как программно исправить эти недочеты.

Проблема 1: Некорректное определение системы налогообложения (СНО)

Проанализируем ситуацию, когда в учетной политике организации четко указано применение ПСН (Патентная система налогообложения), но при пробитии чека из документа ЧекККМ на печать выводится «УСН доход». Выясним причину такого поведения программы.

В новых релизах логика определения СНО была вынесена в общий модуль РозничныеПродажи. Проблема заключается в том, что типовой алгоритм «просматривает» таблицу систем налогообложения и может останавливаться на первой найденной записи, не учитывая специфику перехода на патент в 2021 году. В модуле документа ЧекККМ в функции ПараметрыОперацииФискализацииЧека присутствует следующий фрагмент кода:


Если ПродажаОблагаетсяЕНВД Тогда
    ПараметрыОперацииФискализацииЧека.СистемаНалогообложения = ?(Дата > '20201231235959', 
        Перечисления.ТипыСистемНалогообложенияККТ.Патент, 
        Перечисления.ТипыСистемНалогообложенияККТ.ЕНВД);
Иначе
    ПараметрыОперацииФискализацииЧека.СистемаНалогообложения = РозничныеПродажи.СистемаНалогообложенияФискальнойОперации(Организация);
КонецЕсли;

Как мы видим, если организация ранее была плательщиком ЕНВД, программа автоматически подставляет Патент после 01.01.2021. Однако, если организация перешла на патент с другой системы (например, с ОСНО или УСН), вызывается функция РозничныеПродажи.СистемаНалогообложенияФискальнойОперации, в которой может отсутствовать корректная проверка флага ПСН.

Решение: Нам необходимо доработать функцию СистемаНалогообложенияФискальнойОперации в общем модуле РозничныеПродажи. Добавим в запрос получение данных о патенте и обеспечим их приоритетный возврат.


// Внутри функции СистемаНалогообложенияФискальнойОперации дополним запрос
Запрос = Новый Запрос(
"ВЫБРАТЬ
|	Т.СистемаНалогообложения КАК СистемаНалогообложения,
|	Т.ОбъектНалогообложенияУСН КАК ОбъектНалогообложенияУСН,
|	Т.ОрганизацияЯвляетсяПлательщикомПСН,
|	Т.РозничнаяТорговляОблагаетсяПСН
|ИЗ
|	РегистрСведений.УчетнаяПолитикаНалоговыйУчет.СрезПоследних(&ТекущаяДата, Организация = &Организация) КАК Т");

// После выполнения запроса добавим проверку:
Если ДанныеСистемыНалогообложения.ОрганизацияЯвляетсяПлательщикомПСН Тогда
    СистемаНалогообложения = Перечисления.ТипыСистемНалогообложенияККТ.Патент;
    Возврат СистемаНалогообложения;
КонецЕсли;

Проблема 2: Ошибочное выделение НДС в чеке на патенте

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

Разберем по шагам, почему это происходит. В модуле менеджера документа ЧекККМ появилась новая функция ПредметыРасчетовПоДокументу. Она содержит сложный запрос для сбора данных о товарах. Внутри этого запроса есть условие для определения ставки НДС:


| ВЫБОР
|     КОГДА &ПорядокНалогообложения
|         ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
|     Иначе Товары.Номенклатура.СтавкаНДС
| КОНЕЦ КАК СтавкаНДС,

Параметр &ПорядокНалогообложения устанавливается следующим образом:


Запрос.УстановитьПараметр("ПорядокНалогообложения", 
    (ПорядокНалогообложения = "ПСН") 
    ИЛИ (ПорядокНалогообложения = "ЕНВД") 
    ИЛИ (ПорядокНалогообложения = "УПРОЩЕННАЯ"));

Проблема в том, что при вызове этой функции из модуля самого документа ЧекККМ второй параметр ПорядокНалогообложения не передается и по умолчанию равен Неопределено. В результате условие в запросе всегда дает Ложь, и программа подставляет НДС из номенклатуры.

Решение: Рассмотрим, как правильно передать этот параметр. Нам нужно внести изменения в модуль документа ЧекККМ.

  1. В разделе описания переменных модуля документа добавим экспортную переменную: Перем ПорядокНалогообложения Экспорт;
  2. Найдем функцию ДанныеДляПробитияЧека (или место формирования параметров фискализации).
  3. Изменим вызов функции получения предметов расчетов, передав в нее определенный ранее порядок налогообложения:
    
    // Было:
    // ПредметыРасчетовПоДокументу = Документы.ЧекККМ.ПредметыРасчетовПоДокументу(Ссылка);
    
    // Стало:
    ПредметыРасчетовПоДокументу = Документы.ЧекККМ.ПредметыРасчетовПоДокументу(Ссылка, ПорядокНалогообложения);
    

Важно: Переменная ПорядокНалогообложения должна быть заполнена строковым значением ("ПСН", "ЕНВД" или "УПРОЩЕННАЯ") до момента вызова формирования данных. Проверьте, что в функции ПараметрыОперацииФискализацииЧека логика определения этой строки соответствует вашей учетной политике.

Дополнительные настройки для корректной работы

Помимо правок в коде, рекомендуется проверить настройки в самой базе данных, так как новые механизмы 1С стали более чувствительны к датам:

Проанализировав предложенные решения, мы видим, что основная причина сбоев — это «сырой» код обновления, который не учитывает все варианты передачи параметров между модулями. Применяя данные исправления, мы восстанавливаем корректную цепочку передачи данных от настроек организации до фискального накопителя ККТ.

← На главную