Ошибочный НДС 20% на комиссионном товаре УНФ 3.0
После перехода на НДС 22% в релизе 3.0.12.237 было обнаружено, что на комиссионный товар пробивается ставка НДС 20% вместо 22%.
XML чека формируется в модуле ОборудованиеЧекопечатающиеУстройства в процедуре СформироватьXMLПакетДляФискализацияЧека.
Для существующего чека можно получить XML представление через вызов функции ПодготовитьДанныеОперации с командой «CheckFiscalization«.
Но вызова функции ПодготовитьДанныеОперации я не нашел поиском по конфигурации. Приходится импровизировать.
Данные для фискализации можно получить в функции ПолучитьДанныеДляФискализации модуля менеджера чека, куда просто передать ссылку на чек.
Немного поэкспериментировав, обнаружил что код подготовки пакета можно написать так:
ДанныеДрайвера = Новый Структура(); ДанныеДрайвера.Вставить("Наименование" , "Тест"); ДанныеДрайвера.Вставить("ТипыОборудования" , Новый Структура()); ДанныеДрайвера.Вставить("ТипОборудования" , "Тест"); ДанныеДрайвера.Вставить("ТипОборудованияИмя" , "Тест"); ДанныеДрайвера.Вставить("ПодключениеИзМакета" , ложь); ДанныеДрайвера.Вставить("ПодключениеЛокальноПоИдентификатору", Неопределено); ДанныеДрайвера.Вставить("ИдентификаторОбъекта" , Неопределено); ДанныеДрайвера.Вставить("ВерсияДрайвера" , Неопределено); ДанныеДрайвера.Вставить("ИмяМакетаДрайвера" , Неопределено); ДанныеДрайвера.Вставить("МакетДоступен" , ложь); ДанныеДрайвера.Вставить("СнятСПоддержки" , ложь); ДанныеДрайвера.Вставить("СообщениеПриИспользовании", "Тест"); ДанныеДрайвера.Вставить("БезопасноеПодключение" , Неопределено); ДанныеДрайвера.Вставить("Несертифицированное" , Ложь); ДанныеДрайвера.Вставить("Ссылка" , ПредопределенноеЗначение("Справочник.ПодключаемоеОборудование.ПустаяСсылка")); //ИдентификаторУстройства ДанныеДрайвера.Вставить("РевизияИнтерфейса", 4006); ПараметрыПодключения = МенеджерОборудованияКлиентСервер.ПараметрыПодключения(ДанныеДрайвера); Команда = "CheckFiscalization"; ИскЧек = Документы.ЧекККМ.НайтиПоНомеру("КГГК-000229", '20260101'); ПараметрыОперации = Документы.ЧекККМ.ПолучитьДанныеДляФискализации(ИскЧек); ДанныеДрайвера.Вставить("ФорматФД", "1.2"); //Этим параметром можно управлять ПараметрыОперации.Вставить("АвтономнаяККТ", истина); //Чтобы не проверяла открытие смены ОборудованиеЧекопечатающиеУстройства.ПодготовитьДанныеОперации(ПараметрыПодключения, Команда, ПараметрыОперации);
Немного портит ситуацию проверка активности смены, я обходил ее сначала точкой останова и установкой Активна = истина в табло:


Но потом обнаружил что можно просто прописать условие АвтономнаяККТ = Истина, тогда активность смены вообще не проверяется.
И вот я действительно по действующему чеку получил ставку НДС 20%.
Причина оказалась в модуле МенеджерОборудованияКлиентСервер.ПредставлениеСтавкиНДС:
Там происходит неявная (undocumented) замена ставки для релизов младше 4007:

Я сделал заплатку:

Думаю, нужно перечитать данные фискализации с ККМ, тогда бы заработало и без дописок, получило бы актуальную версию драйвера. Ну или прописать оборудование заново, если такой путь кажетсся сложным.
1С в очередной раз оказывает «медвежью услуг», подсовывая из добрых побуждений заплатку, которая работает во вред.
Но здесь я научился получать XML чека, что в целом довольно полезно.
UPD: Только сейчас понял, что обычный товар пробивался по ставке 5%, замены этой ставки не было, а вот комиссионному не повезло, там ставка 22% и она заменялась на 20%.
Среда: УНФ 3.0.12.237 Объем: 1 час




Свежие комментарии