Переход на новые релизы конфигурации «Управление торговлей 10.3» (начиная с 10.3.72.1) принес значительные изменения в механизмах взаимодействия с торговым оборудованием. Эти изменения связаны с подготовкой к работе по ФФД 1.2 и масштабной переработкой общего кода. Однако в типовом решении возникли ошибки, из-за которых в чеках ККМ некорректно определяется система налогообложения (вместо «Патента» печатается «УСН доход»), а также ошибочно выделяется НДС, даже если организация освобождена от него. Рассмотрим, как программно исправить эти недочеты.
Проанализируем ситуацию, когда в учетной политике организации четко указано применение ПСН (Патентная система налогообложения), но при пробитии чека из документа ЧекККМ на печать выводится «УСН доход». Выясним причину такого поведения программы.
В новых релизах логика определения СНО была вынесена в общий модуль РозничныеПродажи. Проблема заключается в том, что типовой алгоритм «просматривает» таблицу систем налогообложения и может останавливаться на первой найденной записи, не учитывая специфику перехода на патент в 2021 году. В модуле документа ЧекККМ в функции ПараметрыОперацииФискализацииЧека присутствует следующий фрагмент кода:
Если ПродажаОблагаетсяЕНВД Тогда
ПараметрыОперацииФискализацииЧека.СистемаНалогообложения = ?(Дата > '20201231235959',
Перечисления.ТипыСистемНалогообложенияККТ.Патент,
Перечисления.ТипыСистемНалогообложенияККТ.ЕНВД);
Иначе
ПараметрыОперацииФискализацииЧека.СистемаНалогообложения = РозничныеПродажи.СистемаНалогообложенияФискальнойОперации(Организация);
КонецЕсли;
Как мы видим, если организация ранее была плательщиком ЕНВД, программа автоматически подставляет Патент после 01.01.2021. Однако, если организация перешла на патент с другой системы (например, с ОСНО или УСН), вызывается функция РозничныеПродажи.СистемаНалогообложенияФискальнойОперации, в которой может отсутствовать корректная проверка флага ПСН.
Решение: Нам необходимо доработать функцию СистемаНалогообложенияФискальнойОперации в общем модуле РозничныеПродажи. Добавим в запрос получение данных о патенте и обеспечим их приоритетный возврат.
// Внутри функции СистемаНалогообложенияФискальнойОперации дополним запрос
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Т.СистемаНалогообложения КАК СистемаНалогообложения,
| Т.ОбъектНалогообложенияУСН КАК ОбъектНалогообложенияУСН,
| Т.ОрганизацияЯвляетсяПлательщикомПСН,
| Т.РозничнаяТорговляОблагаетсяПСН
|ИЗ
| РегистрСведений.УчетнаяПолитикаНалоговыйУчет.СрезПоследних(&ТекущаяДата, Организация = &Организация) КАК Т");
// После выполнения запроса добавим проверку:
Если ДанныеСистемыНалогообложения.ОрганизацияЯвляетсяПлательщикомПСН Тогда
СистемаНалогообложения = Перечисления.ТипыСистемНалогообложенияККТ.Патент;
Возврат СистемаНалогообложения;
КонецЕсли;
Даже после исправления СНО многие пользователи сталкиваются с тем, что в чеке печатается «В том числе НДС 20%» (или 18%). Это происходит потому, что ставка НДС берется напрямую из карточки номенклатуры, игнорируя настройки организации.
Разберем по шагам, почему это происходит. В модуле менеджера документа ЧекККМ появилась новая функция ПредметыРасчетовПоДокументу. Она содержит сложный запрос для сбора данных о товарах. Внутри этого запроса есть условие для определения ставки НДС:
| ВЫБОР
| КОГДА &ПорядокНалогообложения
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
| Иначе Товары.Номенклатура.СтавкаНДС
| КОНЕЦ КАК СтавкаНДС,
Параметр &ПорядокНалогообложения устанавливается следующим образом:
Запрос.УстановитьПараметр("ПорядокНалогообложения",
(ПорядокНалогообложения = "ПСН")
ИЛИ (ПорядокНалогообложения = "ЕНВД")
ИЛИ (ПорядокНалогообложения = "УПРОЩЕННАЯ"));
Проблема в том, что при вызове этой функции из модуля самого документа ЧекККМ второй параметр ПорядокНалогообложения не передается и по умолчанию равен Неопределено. В результате условие в запросе всегда дает Ложь, и программа подставляет НДС из номенклатуры.
Решение: Рассмотрим, как правильно передать этот параметр. Нам нужно внести изменения в модуль документа ЧекККМ.
Перем ПорядокНалогообложения Экспорт;
ДанныеДляПробитияЧека (или место формирования параметров фискализации).
// Было:
// ПредметыРасчетовПоДокументу = Документы.ЧекККМ.ПредметыРасчетовПоДокументу(Ссылка);
// Стало:
ПредметыРасчетовПоДокументу = Документы.ЧекККМ.ПредметыРасчетовПоДокументу(Ссылка, ПорядокНалогообложения);
Важно: Переменная ПорядокНалогообложения должна быть заполнена строковым значением ("ПСН", "ЕНВД" или "УПРОЩЕННАЯ") до момента вызова формирования данных. Проверьте, что в функции ПараметрыОперацииФискализацииЧека логика определения этой строки соответствует вашей учетной политике.
Помимо правок в коде, рекомендуется проверить настройки в самой базе данных, так как новые механизмы 1С стали более чувствительны к датам:
ПараметрыОперацииФискализацииЧека, явно указав ПараметрыОперацииФискализацииЧека.НомерСекции = Склад.НомерСекции;.БПО изменился для поддержки ФФД 1.2.Проанализировав предложенные решения, мы видим, что основная причина сбоев — это «сырой» код обновления, который не учитывает все варианты передачи параметров между модулями. Применяя данные исправления, мы восстанавливаем корректную цепочку передачи данных от настроек организации до фискального накопителя ККТ.