Конфигурация УТ 11.4.11.106
Платформа 8.3.17.1496
Тестирование проводилось на эмуляторе ККМ версии 3.2 от компании Модуль (//infostart.ru/public/1129950/)
Сейчас конфигурация УТ при печати чека формирует документ CheckPackage в котором оставляет незаполненным атрибут VATAmount (Сумма НДС), не смотря на то, что атрибут может иметь только числовое значение. Пример неправильного документа:
<CheckPackage>
<Parameters CashierName="Администратор" OperationType="1" TaxationSystem="3" CustomerEmail="" CustomerPhone="">
<AgentData/>
<VendorData/>
</Parameters>
<Positions>
<FiscalString Name="Морковь" Quantity="1" PriceWithDiscount="48.6" AmountWithDiscount="48.6" DiscountAmount="1.4" Department="1" VATRate="none" VATAmount="" PaymentMethod="4" CalculationSubject="1">
<GoodCodeData MarkingCode="AAA="/>
<AgentData/>
<VendorData/>
</FiscalString>
</Positions>
<Payments Cash="50" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>"
Передача такого документа на ККМ может вызвать ошибку:
Как написано выше для атрибута VATAmount допустимо только числовое значение. В случае, когда товарная позиция продается со ставкой НДС Без НДС (VATRate="none") атрибут VATAmount не добавляется в документ CheckPackage. Пример правильного документа:
<CheckPackage>
<Parameters CashierName="Администратор" OperationType="1" TaxationSystem="3" CustomerEmail="" CustomerPhone="">
<AgentData/>
<VendorData/>
</Parameters>
<Positions>
<FiscalString Name="Морковь" Quantity="1" PriceWithDiscount="48.6" AmountWithDiscount="48.6" DiscountAmount="1.4" Department="1" VATRate="none" PaymentMethod="4" CalculationSubject="1">
<GoodCodeData MarkingCode="AAA="/>
<AgentData/>
<VendorData/>
</FiscalString>
</Positions>
<Payments Cash="50" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>"
В методе общего модуля МенеджерОборудованияВызовСервера.СформироватьXMLПакетДляФискализацияЧека для данного СуммаНДС отсутствует проверка на пустое значение и как следствие пустые значения попадают в XML документ .
Ошибку можно исправить заменив фрагмент кода данного метода:
// { PEN 09.06.2020 #1222 $ Атрибут VATAmount должен быть заполнен
Если ТекущаяПозиция.Свойство("СуммаНДС") И НЕ ПустаяСтрока(ТекущаяПозиция.СуммаНДС) Тогда
ЗаписьXML.ЗаписатьАтрибут("VATAmount", XMLСтрока(ТекущаяПозиция.СуммаНДС));
КонецЕсли;
// PEN }
или установить расширение.