Ошибочный НДС 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 час

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *