Использование принтера чеков для отладки чеков на примере неправильной ставки НДС при авансе. УНФ 3.0
Я решал задачу, почему аванс по предоплате печатается без НДС.
Решил использовать принтер чеков. Для этого нужно сделать две заплатки.
В модуле ОборудованиеЧекопечатающиеУстройства:
&Вместо("ПодготовитьДанныеОперации") Функция дор_ПодготовитьДанныеОперации(ПараметрыПодключения, Команда, ПараметрыОперации) ЭтоПринтерЧеков = Команда = "OpenShift" ИЛИ Команда = "CloseShift" ИЛИ Команда = "CheckFiscalization" И ПараметрыПодключения.ТипыОборудования.Свойство("ПринтерЧеков") И ПараметрыПодключения.ТипыОборудования.ПринтерЧеков; Если ЭтоПринтерЧеков Тогда //25-01-16 Осипов Разрешаем фискализацию на принтерах чеков ПараметрыОперации.Вставить("АвтономнаяККТ", истина); КонецЕсли; ДанныеОперации = ПродолжитьВызов(ПараметрыПодключения, Команда, ПараметрыОперации); Если ЭтоПринтерЧеков И ДанныеОперации.Свойство("ТекстЧека") Тогда //25-01-16 Печатаем текст чека Сообщить(Символы.ПС + Символы.ПС + ДанныеОперации.ТекстЧека); КонецЕсли; Возврат ДанныеОперации; КонецФункции
В форме ФормаРМК обработки РабочееМестоКассира:
&НаСервереБезКонтекста &Вместо("КассаПоддерживаетОперацииПоСНОИзСпискаПокупок") Функция дор_КассаПоддерживаетОперацииПоСНОИзСпискаПокупок(ИдентификаторУстройства, СНОИзСпискаПокупок) //Чтобы на принтерах чеков не работал этот контроль Если ИдентификаторУстройства.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.ПринтерЧеков Тогда Результат = Новый Структура("Ошибка,ТекстОшибки", Ложь, ""); Результат.Ошибка = ложь; Возврат Результат; КонецЕсли; Результат = ПродолжитьВызов(ИдентификаторУстройства, СНОИзСпискаПокупок); Возврат Результат; КонецФункции
Единственно, в кассе ККМ принтер чеков почему-то можно прописать только как «Сервис оборудования»:

Можно было использовать и кассу без подключения (без доработок), но там я не видел чек. Хотя, как показывает задача, можно было обойтись и без визуализации чека.
Этот текст чека заплатка выдает в окно сообщений. Видно, что ставка без НДС передается уже в команду «CheckFiscalization», т.е. задается где-то раньше:

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

Ставка получается так:

Ставка НСД 5% выглядит так:

Как видим, здесь ошибка — не указана ставка НДС 5%. Исправляем патчем модуля УправлениеНебольшойФирмойПовтИсп:
&Вместо("ПолучитьЗначениеСтавкиНДСДляККТ") Функция дор_ПолучитьЗначениеСтавкиНДСДляККТ(СтавкаНДС, ЭтоАванс) //Исправляем в 1С не учитываются 5% на аванс Результат = ПродолжитьВызов(СтавкаНДС, ЭтоАванс); Если Результат = Неопределено И ЗначениеЗаполнено(СтавкаНДС) И Не СтавкаНДС.НеОблагается И ЭтоАванс Тогда Если СтавкаНДС.Ставка = 5 Тогда Результат = 105; ИначеЕсли СтавкаНДС.Ставка = 7 Тогда Результат = 107; КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции
После этого ставка НДС печатается нормально (на скрине ошибочная ставка, другого нет):

Налицо ошибка 1С. Причем в релизе, который якобы готов к ставке НДС 5%.
Среда: УНФ 3.0.10.178 Объем: 1.5 час

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