Имя: Пароль:
1C
1С v8
Касса Атол 30Ф в УТ 11.1 "неверный НДС"
,
0 Valentus
 
31.01.19
13:26
Всем добрый день.

Есть проблема: в базе УТ 11.1 по кассе Атол 30Ф из ПКО не печатается чек. Если ПКО привязан к Заказу покупателя "при печати чека произошла ошибка. Чек не напечатан на фискальном устройстве. Дополнительное описание: при выполнении операции произошла ошибка: Указан неверный НДС".
Драйвер стоит 8.16.05, на 10-е драйвера касса не реагирует (хотя они установлены и тест проходит).
Обновлять конфигурацию не можем.
Если у ПКО убрать заказ клиента - чек печатается, но без спецификации номенклатуры.

Подскажите где искать проблему. Спасибо
1 Garykom
 
гуру
31.01.19
13:41
(0) "Указан неверный НДС"

Отладчик в зубы и покажи XML который формируется
2 Garykom
 
гуру
31.01.19
13:43
Суть в том что вероятно сами запилили "Ставку НДС 20%" но не везде.
Надо на обновленных прошивках ККТ передавать через драйвер старую ставку 18%, а ККТ чтобы сама с 01.01.2019 пробивала 20%
3 Garykom
 
гуру
31.01.19
13:43
(2) не везде правильно
4 Woldemar177
 
31.01.19
13:56
(0) Прошивка кассы какая? Кассу выключаете жмете прогонку включаете два пика отпускаете выйдет тестовый чек смотрите прошивку.
5 Valentus
 
31.01.19
14:15
(0) Прошивка кассы какая? Кассу выключаете жмете прогонку включаете два пика отпускаете выйдет тестовый чек смотрите прошивку.

После двух пиков вылез "демонстрационный чек с кучей шрифтов" Прошивки на нем не написано. Через драйвер ККМ АТОЛ 30Ф, №00000000, версия: 3.0.1245, ФИСК.
6 Garykom
 
гуру
31.01.19
14:16
(5) "Два пика" это после первого при включении
7 Garykom
 
гуру
31.01.19
14:17
(6)+ Хотя нет всего два с первым
8 Valentus
 
31.01.19
14:21
версия: 3.0.1245 - это не прошивка?
9 Valentus
 
31.01.19
16:10
Посмотрел. у Драйвера Атола KKT_8_16_05_00_Full нет ставки в налогах 20%.
10 Garykom
 
гуру
31.01.19
16:13
(9) Читать не пробовали? Что написано в (1) и (2)
11 Aswed
 
31.01.19
16:15
(9) Я и на 8.14 удачно печатаю НДС 20
12 Garykom
 
гуру
31.01.19
16:49
(11) Сказочник
13 Valentus
 
01.02.19
10:57
Ошибку нашел. Если в заказе клиента стоит 20%, то не печатается. Если поставить в заказе клиента 18%, то печатается все нормально с номенклатурой и с 20%
14 Valentus
 
01.02.19
12:14
Отладчик не показывает ошибок и остановок нет, но "неверный НДС" вылетает.
в УТ 10.3 это поправляли в ПолучитьСтавкуНДСДляФискализацииЧека

в УТ 11 не найду такой. где ещё можно посмотреть?
проверил весь код, где встречается НДС18, везде есть НДС20
15 Garykom
 
гуру
01.02.19
12:43
(14) Еще раз повторю для невнимательных.

Найди место в коде где формируется XML по формату
https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter270
с "CheckPackage"

И сделай перед этим так чтобы в "Positions FiscalString Tax" вместо "20" было "18", не смотря на то что в конфе 20% выбрано.

У тебя в драйвере старая интеграционная компонента для 1С, она не понимает НДС20%.
Но прошивка ККТ получив 18 сама пробьет 20, так что пофиг.
16 Valentus
 
01.02.19
13:02
Функция ПолучитьXMLПакетДляФискализацияЧека(ОбщиеПараметры, ВыходныеПараметры, СуммаЧека, ШиринаСтроки = 32) Экспорт
    
    ПозицииЧека  = ОбщиеПараметры.ПозицииЧека;
    ТаблицаОплат = ОбщиеПараметры.ТаблицаОплат;
    СуммаЧека = 0;
    
    // Пакетная печать чека. Подготовка пакета.
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку("UTF-8");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("CheckPackage");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Parameters");
    
    ТипРасчета = МенеджерОборудованияКлиентСервер.ПолучитьКодТипаРасчетаДенежнымиСредствами(ОбщиеПараметры.ТипРасчета);
    ЗаписьXML.ЗаписатьАтрибут("PaymentType"       , XMLСтрока(ТипРасчета));
    
    Если ОбщиеПараметры.Свойство("КодСистемыНалогообложения") И ОбщиеПараметры.КодСистемыНалогообложения <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("TaxVariant"        , XMLСтрока(ОбщиеПараметры.КодСистемыНалогообложения));
    КонецЕсли;
    
    ЗаписьXML.ЗаписатьАтрибут("SenderEmail", XMLСтрока(?(ОбщиеПараметры.Свойство("ОтправительEmail"), ОбщиеПараметры.ОтправительEmail, "")));
    // Email отправляет средствами 1C
    Если ОбщиеПараметры.Свойство("Отправляет1СEmail") И НЕ ОбщиеПараметры.Отправляет1СEmail Тогда
        ЗаписьXML.ЗаписатьАтрибут("CustomerEmail", XMLСтрока(?(ОбщиеПараметры.Свойство("ПокупательEmail"), ОбщиеПараметры.ПокупательEmail, "")));
    КонецЕсли;
    // SMS отправляет средствами 1C
    Если ОбщиеПараметры.Свойство("Отправляет1СSMS") И НЕ ОбщиеПараметры.Отправляет1СSMS Тогда
        ЗаписьXML.ЗаписатьАтрибут("CustomerPhone", XMLСтрока(?(ОбщиеПараметры.Свойство("ПокупательНомер"), ОбщиеПараметры.ПокупательНомер, "")));
    КонецЕсли;
    
    Если ОбщиеПараметры.Свойство("ВознагражденияАгента") И ОбщиеПараметры.ВознагражденияАгента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("AgentCompensation" , XMLСтрока(ОбщиеПараметры.ВознагражденияАгента));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ТелефонПлатежногоАгента") И ОбщиеПараметры.ТелефонПлатежногоАгента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("AgentPhone" , XMLСтрока(ОбщиеПараметры.ТелефонПлатежногоАгента));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ТелефонОператораПоПриемуПлатежей") И ОбщиеПараметры.ТелефонОператораПоПриемуПлатежей <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("ReceivePaymentsOperatorPhone" , XMLСтрока(ОбщиеПараметры.ТелефонОператораПоПриемуПлатежей));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ТелефонОператораПеревода") И ОбщиеПараметры.ТелефонОператораПеревода <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorPhone" , XMLСтрока(ОбщиеПараметры.ТелефонОператораПеревода));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("АдресОператораПеревода") И ОбщиеПараметры.АдресОператораПеревода <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorAddress" , XMLСтрока(ОбщиеПараметры.АдресОператораПеревода));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ИННОператораПеревода") И ОбщиеПараметры.ИННОператораПеревода <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorVATIN" , XMLСтрока(ОбщиеПараметры.ИННОператораПеревода));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("НаименованиеОператораПеревода") И ОбщиеПараметры.НаименованиеОператораПеревода <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorName" , XMLСтрока(ОбщиеПараметры.НаименованиеОператораПеревода));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ТелефонБанковскогоАгента") И ОбщиеПараметры.ТелефонБанковскогоАгента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("BankAgentPhone" , XMLСтрока(ОбщиеПараметры.ТелефонБанковскогоАгента));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ТелефонБанковскогоСубагента") И ОбщиеПараметры.ТелефонБанковскогоСубагента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("BankSubagentPhone" , XMLСтрока(ОбщиеПараметры.ТелефонБанковскогоСубагента));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ОперацияБанковскогоАгента") И ОбщиеПараметры.ОперацияБанковскогоАгента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("BankAgentOperation" , XMLСтрока(ОбщиеПараметры.ОперацияБанковскогоАгента));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ОперацияБанковскогоСубагента") И ОбщиеПараметры.ОперацияБанковскогоСубагента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("BankSubagentOperation" , XMLСтрока(ОбщиеПараметры.ОперацияБанковскогоСубагента));
    КонецЕсли;
    Если ОбщиеПараметры.Свойство("ВознагражденияБанковскогоАгента") И ОбщиеПараметры.ВознагражденияБанковскогоАгента <> Неопределено Тогда
        ЗаписьXML.ЗаписатьАтрибут("BankAgentCompensation" , XMLСтрока(ОбщиеПараметры.ВознагражденияБанковскогоАгента));
    КонецЕсли;
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    // Табличная часть
    Если ОбщиеПараметры.ПозицииЧека <> Неопределено Тогда
        ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
        Для ИндексМассива = 0 По ОбщиеПараметры.ПозицииЧека.Количество() - 1 Цикл
            ТекущаяПозиция = ОбщиеПараметры.ПозицииЧека[ИндексМассива];
            Если ТекущаяПозиция.Свойство("ФискальнаяСтрока") Тогда
                    ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString");
                    ЗаписьXML.ЗаписатьАтрибут("Name"      , XMLСтрока(ТекущаяПозиция.Наименование));
                    ЗаписьXML.ЗаписатьАтрибут("Quantity"  , XMLСтрока(ТекущаяПозиция.Количество));
                    ЗаписьXML.ЗаписатьАтрибут("Price"     , XMLСтрока(ТекущаяПозиция.Сумма/ТекущаяПозиция.Количество)); //Т.В.Ю.
                    //ЗаписьXML.ЗаписатьАтрибут("Price"     , XMLСтрока(ТекущаяПозиция.Цена));
                    ЗаписьXML.ЗаписатьАтрибут("Amount"    , XMLСтрока(ТекущаяПозиция.Сумма));
                    ЗаписьXML.ЗаписатьАтрибут("DiscountSum" , XMLСтрока(0));                        //Т.В.Ю.
                    ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции));
                    Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда
                        //ЗаписьXML.ЗаписатьАтрибут("Tax"   , XMLСтрока(ТекущаяПозиция.СтавкаНДС));
                          ЗаписьXML.ЗаписатьАтрибут("Tax"   , "SumTAX18");
                    Иначе
                        ЗаписьXML.ЗаписатьАтрибут("Tax"   , "none");
                    КонецЕсли;
                    ЗаписьXML.ЗаписатьКонецЭлемента();
                    СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма;
                ИначеЕсли ТекущаяПозиция.Свойство("ТекстоваяСтрока") Тогда
                    Если ТекущаяПозиция.Свойство("ПереносСтроки") И ТекущаяПозиция.ПереносСтроки Тогда
                        ТекстовыеСтроки = МенеджерОборудованияКлиентСервер.ПостроитьПолеПереносом(ТекущаяПозиция.Текст, ШиринаСтроки);
                    Иначе
                        ТекстовыеСтроки = ТекущаяПозиция.Текст;
                    КонецЕсли;
                    Выравнивание = ?(ТекущаяПозиция.Свойство("Выравнивание"),  ТекущаяПозиция.Выравнивание, "Лево");
                    Для НомерСтроки = 1 По СтрЧислоСтрок(ТекстовыеСтроки) Цикл
                        ВыделеннаяСтрока = СтрПолучитьСтроку(ТекстовыеСтроки, НомерСтроки);
                        ВыделеннаяСтрока = МенеджерОборудованияКлиентСервер.ВыравнитьПоле(ВыделеннаяСтрока, ШиринаСтроки, Выравнивание);
                        ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
                        ЗаписьXML.ЗаписатьАтрибут("Text", XMLСтрока(ВыделеннаяСтрока));
                        ЗаписьXML.ЗаписатьКонецЭлемента();  
                    КонецЦикла;
                ИначеЕсли ТекущаяПозиция.Свойство("ШтрихКод") Тогда
                    ЗаписьXML.ЗаписатьНачалоЭлемента("Barcode");
                    ЗаписьXML.ЗаписатьАтрибут("BarcodeType", XMLСтрока(ТекущаяПозиция.ТипШтрихкода));
                    ЗаписьXML.ЗаписатьАтрибут("Barcode", XMLСтрока(ТекущаяПозиция.ШтрихКод));
                    ЗаписьXML.ЗаписатьКонецЭлемента();
            КонецЕсли;
        КонецЦикла;
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЕсли;


Так? ранее с торговым оборудованием просто не сталкивался
17 Valentus
 
01.02.19
13:03
Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда
                        //ЗаписьXML.ЗаписатьАтрибут("Tax"   , XMLСтрока(ТекущаяПозиция.СтавкаНДС));

                          ЗаписьXML.ЗаписатьАтрибут("Tax"   , "SumTAX18");
                    Иначе
                        ЗаписьXML.ЗаписатьАтрибут("Tax"   , "none");
                    КонецЕсли;
18 Garykom
 
гуру
01.02.19
13:07
ЗаписьXML.ЗаписатьАтрибут("Tax", "18");
19 Garykom
 
гуру
01.02.19
13:08
"SumTAX18" это из другой оперы - это не указание ставки а ручное указание суммы НДС18
20 Valentus
 
04.02.19
09:32
Спасибо за помощь! Всё получилось!
21 IchBinKOT
 
14.02.19
16:39
(14) у нас в УПП был косяк что в процедуре МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляФискализацияЧека_ТО не обрабатывалась ставка 20%, дописал две строи и все запечатало

Если НЕ ПустаяСтрока(ТекущаяПозиция.СтавкаНДС) Тогда
    Если ТекущаяПозиция.СтавкаНДС = 118 Тогда
        ЗначениеСтавкаНДС = "18/118";
    ИначеЕсли ТекущаяПозиция.СтавкаНДС = 110 Тогда
        ЗначениеСтавкаНДС = "10/110";
    Иначе
        ЗначениеСтавкаНДС = ТекущаяПозиция.СтавкаНДС;
    КонецЕсли;
Иначе
    ЗначениеСтавкаНДС = "none";
КонецЕсли;

сюда попадало значение 120 и оно же залетало в XML и валило печать