8.х Печать чека ККМ Розница. Дополнительные сведения.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем TODD22, 19 сен 2017.

  1. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104
    Здравствуйте.

    В Рознице 2.2 хочу вывести доп сведения в чек.

    Нашёл процедуру формирования xml документа.
    Код:
    Если ОбщиеПараметры.ПозицииЧека <> Неопределено Тогда
            ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
            Для ИндексМассива = 0 По ОбщиеПараметры.ПозицииЧека.Количество() - 1 Цикл
                ТекущаяПозиция = ОбщиеПараметры.ПозицииЧека[ИндексМассива];
                Если ТекущаяПозиция.Свойство("ФискальнаяСтрока") Тогда
                    ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString");
                    ЗаписьXML.ЗаписатьАтрибут("Name"      , XMLСтрока(ТекущаяПозиция.Наименование));
                    ЗаписьXML.ЗаписатьАтрибут("Quantity"  , XMLСтрока(ТекущаяПозиция.Количество));
                    ЗаписьXML.ЗаписатьАтрибут("Price"     , XMLСтрока(ТекущаяПозиция.Цена));
                    ЗаписьXML.ЗаписатьАтрибут("Amount"    , XMLСтрока(ТекущаяПозиция.Сумма));
                    ЗаписьXML.ЗаписатьАтрибут("Tax"       , XMLСтрока(ТекущаяПозиция.СтавкаНДС));
                    ЗаписьXML.ЗаписатьКонецЭлемента();
                    СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма;
                    /////ДОБАВИЛ Эта строка выводится
                    ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
                    ЗаписьXML.ЗаписатьАтрибут("Text" , XMLСтрока("Карта: 0000000000001"));
                    ЗаписьXML.ЗаписатьКонецЭлемента();
                    ////ДОБАВИЛ Эта строка выводится
                ИначеЕсли ТекущаяПозиция.Свойство("ТекстоваяСтрока") Тогда
                    ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
                    ЗаписьXML.ЗаписатьАтрибут("Text", XMLСтрока(ТекущаяПозиция.Текст));
                    ЗаписьXML.ЗаписатьКонецЭлемента();
                    ///// ДОБАВИЛ Не выводится
                    //ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
                    //ЗаписьXML.ЗаписатьАтрибут("Text" , XMLСтрока("Карта: 0000000000001"));
                    //ЗаписьXML.ЗаписатьКонецЭлемента();
                    ///// ДОБАВИЛ Не выводится
                ИначеЕсли ТекущаяПозиция.Свойство("ШтрихКод") Тогда
                    ЗаписьXML.ЗаписатьНачалоЭлемента("Barcode");
                    ЗаписьXML.ЗаписатьАтрибут("BarcodeType", XMLСтрока(ТекущаяПозиция.ТипШтрихкода));
                    ЗаписьXML.ЗаписатьАтрибут("Barcode", XMLСтрока(ТекущаяПозиция.ШтрихКод));
                    ЗаписьXML.ЗаписатьКонецЭлемента();
                Иначе
                    ТекстОшибки = НСтр("ru='Не определен тип позиции чека.'");
                    ВыходныеПараметры.Очистить();
                    ВыходныеПараметры.Вставить("ТекстОшибки", ТекстОшибки);
                    Результат = Ложь; 
                    Возврат Результат;
                КонецЕсли;
            КонецЦикла;
            ЗаписьXML.ЗаписатьКонецЭлемента();
        КонецЕсли;
       
        // Таблица оплат
        Если ТаблицаОплат <> Неопределено Тогда
            СуммаНаличнойОплаты     = 0;
            СуммаЭлектроннойОплаты1 = 0;
            СуммаЭлектроннойОплаты2 = 0;
            СуммаЭлектроннойОплаты3 = 0;
            Для ИндексОплаты = 0 По ТаблицаОплат.Количество() - 1 Цикл
                Если ТаблицаОплат[ИндексОплаты].ТипОплаты = 0 Тогда
                    СуммаНаличнойОплаты = СуммаНаличнойОплаты + ТаблицаОплат[ИндексОплаты].Сумма;
                ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = 1 Тогда
                    СуммаЭлектроннойОплаты1 = СуммаЭлектроннойОплаты1 + ТаблицаОплат[ИндексОплаты].Сумма;
                ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = 2 Тогда
                    СуммаЭлектроннойОплаты2 = СуммаЭлектроннойОплаты2 + ТаблицаОплат[ИндексОплаты].Сумма;
                Иначе
                    СуммаЭлектроннойОплаты3 = СуммаЭлектроннойОплаты3 + ТаблицаОплат[ИндексОплаты].Сумма;
                КонецЕсли;
            КонецЦикла;
           
            ЗаписьXML.ЗаписатьНачалоЭлемента("Payments");
            ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличнойОплаты));
            ЗаписьXML.ЗаписатьАтрибут("CashLessType1", XMLСтрока(СуммаЭлектроннойОплаты1));
            ЗаписьXML.ЗаписатьАтрибут("CashLessType2", XMLСтрока(СуммаЭлектроннойОплаты2));
            ЗаписьXML.ЗаписатьАтрибут("CashLessType3", XMLСтрока(СуммаЭлектроннойОплаты3));
            ////ДОБАВИЛ - Не выводится
            ЗаписьXML.ЗаписатьНачалоЭлемента("Document");
            ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
            ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
            ЗаписьXML.ЗаписатьАтрибут("Text" , XMLСтрока("Карта: 0000000000002"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            ЗаписьXML.ЗаписатьКонецЭлемента();
            ЗаписьXML.ЗаписатьКонецЭлемента();
            ///ДОБАВИЛ - не выводится
            ЗаписьXML.ЗаписатьКонецЭлемента();
           
            ////ДОБАВИЛ - не выводится
            ЗаписьXML.ЗаписатьНачалоЭлемента("Document");
            ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
            ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
            ЗаписьXML.ЗаписатьАтрибут("Text" , XMLСтрока("Карта: 0000000000005"));
            ЗаписьXML.ЗаписатьКонецЭлемента();
            ЗаписьXML.ЗаписатьКонецЭлемента();
            ЗаписьXML.ЗаписатьКонецЭлемента();
            ///ДОБАВИЛ - не выводится
    
        КонецЕсли;
        //ДОБАВИЛ - не выводится
        ЗаписьXML.ЗаписатьНачалоЭлемента("Document");   
        ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
        ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
        ЗаписьXML.ЗаписатьАтрибут("Text" , XMLСтрока("Карта: 0000000000003"));
        ЗаписьXML.ЗаписатьКонецЭлемента();   
        ЗаписьXML.ЗаписатьКонецЭлемента();
        ЗаписьXML.ЗаписатьКонецЭлемента();
        //ДОБАВИЛ - не выводится.
       
        ЗаписьXML.ЗаписатьКонецЭлемента();
    
    Вставил в нескольких местах код. Выводится только в первой вставке под строкой номенклатуры.
    Остальные не выводятся на форму чека.
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    Внимательно посмотри структуру хмл, зачем ты пытаешься запихать свой текст в вывод позиций товара и оплат, добавляй после
  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104
    Я не пытаюсь его запихать в вывод товара. Просто для теста добавил. Там он как раз и выводится. А дальше нет.
    Скинь пример :)
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Я экспериментировал непосредственно с методами драйверов. Думаю ни чем не отличается от передачи пакета через XML.
    Для вывода на печать используется метод PrintString(), атрибут StringForPrinting. Как бы не изгалялся - касса отказывалась печатать.
    Ни какой ошибки драйвер не возвращал, но печать не производилась.
    Единственное что сработало - присвоить атрибуту StringForPrinting нужное значение перед закрытием чека. Тогда нужная строка печатается.
    TODD22 нравится это.
  5. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    У меня так)
    Элемент должен называться "TextString", а атрибут "Text"

    Вложения:

    TODD22 нравится это.
  6. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104
    Спасибо. Вроде получилось. Сейчас ещё посмотрю что в ОФД приходит.
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    а какой смысл это печатать? Методом драйвера вы определяет что это - продажа или возврат. А касса сама печатает (продажа-возврат)
  8. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    Что значит "Методом драйвера вы определяете что это - продажа или возврат"? Хотите сказать, что можно узнать операцию, вызвав нужный метод api драйвера? Разумеется, только кто в эту муть лезет, если все, что нужно есть в 1с.
    Задача давняя, но, кажется, что клиент просил печатать именно так ("Продажа/возврат товара"), а не как иначе (точно была другая строка).
    Плюс там своя бонусная система, и он просил внизу чека это также печатать, на тот момент (до 2.2.6) шаблон макета чека не работал для онлайн-касс, раньше это можно было сделать прямо там вроде.
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Все с точностью до наоборот))) Может я не совсем явно выразился - извиняюсь.
    Поясню на примере.
    В моем случае чек пробивается или из ПКО или из документа Чек (розница)
    В пко мы при пробитии имеем номер чека (если номер есть - это возврат, если нет - продажа)
    В Чек за вид отвечает реквизит операция.

    Получая документ в обработку печати чека я определяю что это: возврат или продажа. И уже после этого вызываю соответствующий метод драйвера. (Sale/ReturnSale)

    Касса сама пишет в чеке вид операции (продажа-возврат)

    ДО онлайн касс проблем не было - печатай хоть письмо Ленину. Потом похоже метод PrintString придушили умышленно, чтобы печаталось только то что регистрируется методами продажи-возврата
    Последнее редактирование: 19 сен 2017
  10. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    Щас тоже можно письмо Ильичу отправить, если не ломать структуру хмл файла, отправляемого драйверу/обработке обслуживания:)