Http-сервис для работы с ККТ

12.10.17

Интеграция - ККМ

Пример работы с ККТ через HTTP запрос. В соответствии с 54-ФЗ продавец должен отправить электронный чек покупателю. В рабочее время это делает кассир, но как быть, если оплата произведена вне рабочего времени? Например, покупка на сайте. Для этого я разработал данный HTTP-сервис для взаимодействия сайта и ККТ в автоматическом режиме.

На сервис передается строка данных JSON POST-запросом, в которой содержатся данные чека. Вызывается wsgi-скрипт, который взаимодействуя с дравйером ТО пробивает чек на ККТ и чек отправляется покупателю. Смена открывается и закрывается автоматически. ККТ подключен по ethernet-интерфейсу. Параметры подключения задаются в файле conf.py. Модель ККТ: Атол 55Ф.

Для работы сервиса необходимо:

  1. Ubuntu + Apache web-сервер с установленным wsgi-mod.
  2. Драйвер АТОЛ ККТ 9.x (я работал с 9.10.1.5756) скачать можно тут http://fs.atol.ru -> Файловый архив -> Программное обеспечение - ДТО

Для установки wsgi-mod на web-сервере выполните: sudo apt install libapache2-mod-wsgi

Для проверки что mod-wsgi подгрузился выполните: sudo apache2ctl -M выведется список загруженных модулей, в котором должа присутствовть строка wsgi_module (shared)

АТОЛ драйвер ККТ распакуйте и скопируйте файлы из папки с подходящей архитектурой в папку где лежит wsgi-скрипт Файлы dto9base.py и dto9fptr.py из папки python в папку где лежит wsgi-скрипт В данном примере в папку /var/www/kkt

В файле conf.py пропишите параметры подключения к ККТ IP адрес, порт, путь к лог файлу и т.д. Параметр "Model" сотрим в Руководстве программиста приложение 7 модели ККМ Параметр "Test mode" - признак тестового режима. Если True, то метод на ККМ выполнен не будет (не будет ничего напечатано на чеке), но ее успешное выполнение (ResultCode = 0) сигнализирует о том, что при данном состоянии ККМ метод может быть выполнен без ошибок.

Создаем виртуальный хост apache /etc/apache2/sites-enabled/kkt

sudo nano /etc/apache2/sites-available/000-default.conf
Добавляем настройку:

<VirtualHost *:80>

    ServerName 192.168.x.x
    ServerAlias localhost
    DocumentRoot "/var/www/kkt"
    <Directory /var/www/kkt>
    AddDefaultCharset utf-8
    Order allow,deny
    Allow from all
    </Directory>

    WSGIScriptAlias /kkt /var/www/kkt/kkt.wsgi

    LogLevel info

</VirtualHost>

WSGIPythonPath /var/www/kkt

Выполняем команду sudo service apache2 restart

Заходим на страницу http://192.168.x.x/kkt. Должны увидеть результат выполнение команды GetStatus():

    Статус ККТ:
    (0, u'Ошибок нет', 0, u'Ошибок в параметрах нет')

Если возникли ошибки, смотрим /var/log/apache2/error.log и лог файл, путь к котрому указан в conf.py

Формирование POST-запроса к сервису. На сервис нужно отправить JSON данные чека.

    {"DocNumber": "ТР00-003655", # Номер документа
    "DocDate": "06.10.2017",    # Дата документа
    "DocSumm": 1950,            # Сумма документа
    "Goods": {                  # Товары
            "Position_1": {     # Позиция товара
                    "Name": "Наименование товара",  # Наименование товара
                    "Price": 325.12,                # Цена товара
                    "Quantity": 6,                  # Количество товара
                    "Tax": 18,                      # НДС
                    "PositionSumm": 1950            # Сумма по позиции
                    }
            }
    }

Сервис напечатает чек на ККТ и вернет JSON ответ, в котором будет номер чека, код результата и описание результата.

Я вызываю сервис из 1С таким способом:

    // Функция формирует POST-запрос для HTTP сервиса.
    // Возвращает ответ с номером пробитого на ККТ чека.
    // Константы.IPАдресHTTPСервисаККТ - IP адрес сервиса. Например 192.168.x.x.
    // Константы.ИмяHTTPСервисаККТ - Имя сервиса. Например kkt
    Функция ПробитьЧекНаККТ(ДокументОплаты) Экспорт

        Результат = 0;

        Если ДокументОплаты.НомерЧекаККМ <> 0 Тогда 
            Возврат Результат;
        КонецЕсли;
        
        // Формируем данные чека
        ПараметрыФискализацииЧека = ДенежныеСредстваВызовСервера.ПараметрыЧека(ДокументОплаты, "");
        СтруктураДанных = Новый Структура;
        СтруктураДанных.Вставить("DocNumber", ДокументОплаты.Номер);
        СтруктураДанных.Вставить("DocDate", Формат(ДокументОплаты.Дата, "ДФ=dd.MM.yyyy"));
        СтруктураДанных.Вставить("DocSumm", ДокументОплаты.СуммаДокумента);
        СтруктураТовары = Новый Структура;

        НомерСтрокиТовара = 0;
        Для Каждого СтрокаМассива Из ПараметрыФискализацииЧека.ПозицииЧека Цикл
            НомерСтрокиТовара = НомерСтрокиТовара + 1;
            СтруктураСтрокаТовара = Новый Структура;
            СтруктураСтрокаТовара.Вставить("Name", СтрокаМассива.Наименование);
            СтруктураСтрокаТовара.Вставить("Price", СтрокаМассива.Цена);
            СтруктураСтрокаТовара.Вставить("Quantity", СтрокаМассива.Количество);
            СтруктураСтрокаТовара.Вставить("Tax", СтрокаМассива.СтавкаНДС);
            СтруктураСтрокаТовара.Вставить("PositionSumm", СтрокаМассива.Сумма);
            СтруктураТовары.Вставить("Position_" + НомерСтрокиТовара, СтруктураСтрокаТовара);
        КонецЦикла;

        СтруктураДанных.Вставить("Goods", СтруктураТовары);

        // Сформируем JSON из данных чека
        ЗаписьJSON = Новый ЗаписьJSON;
        ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(,Символы.Таб));
        НастройкиСериализации = Новый НастройкиСериализацииJSON();
        НастройкиСериализации.СериализовыватьМассивыКакОбъекты = Ложь;
        ЗаписатьJSON(ЗаписьJSON, СтруктураДанных, НастройкиСериализации);
        СтрокаДанных = ЗаписьJSON.Закрыть();        

        // Выполнение запроса HTTP к сервису.
        Попытка
            АдресСервера = СокрЛП(Константы.IPАдресHTTPСервисаККТ.Получить());
            Соединение = Новый HTTPСоединение(АдресСервера);
        Исключение
            ТекстОшибки = нСтр("ru='Отсутствует соединение с сервером'");
            ЗаписьЖурналаРегистрации("ККТ", УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки + Символы.ПС
                                    +ИнформацияОбОшибке());
            Возврат Результат;
        КонецПопытки;

        ИмяСервиса = Константы.ИмяHTTPСервисаККТ.Получить();
        Если Лев(ИмяСервиса, 1) <> "/" Тогда
            ИмяСервиса = "/" + ИмяСервиса;
        КонецЕсли;
        HTTPЗапрос = Новый HTTPЗапрос(ИмяСервиса);
        HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
        HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаДанных, КодировкаТекста.UTF8,
                                            ИспользованиеByteOrderMark.НеИспользовать);
        HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
        КодСостояния = HTTPОтвет.КодСостояния;
        ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
        Если ЗначениеЗаполнено(ТелоОтвета) Тогда
            ЧтениеJSON = Новый ЧтениеJSON;
            Попытка
                ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
                Результат = ПрочитатьJSON(ЧтениеJSON);
                ЧтениеJSON.Закрыть();
            Исключение
                ЗаписьЖурналаРегистрации("ККТ", УровеньЖурналаРегистрации.Ошибка,,, "Ответ сервера: " + ТелоОтвета +
                                            Символы.ПС + "Ответ ожидается в JSON формате!");
                Возврат Результат;
            КонецПопытки;

            Если Результат.result_code <> 0 Тогда 
                ЗаписьЖурналаРегистрации("ККТ", УровеньЖурналаРегистрации.Ошибка,,, "Не пробит чек на оплату с сайта!" +
                                            Символы.ПС + Строка(ДокументОплаты));
            Иначе 
                ЗаписьЖурналаРегистрации("ККТ", УровеньЖурналаРегистрации.Информация,,, "Пробит чек. Номер чека: " +
                                            Результат.check_number + Символы.ПС + "Код ответа: " + 
                                            Результат.result_code + Символы.ПС + "Описание ответа: " +
                                            Результат.result_description);
                Возврат Число(Результат.check_number);
            КонецЕсли;
        Иначе 
            ЗаписьЖурналаРегистрации("ККТ", УровеньЖурналаРегистрации.Ошибка,,, "Нет ответа от HTTP-сервиса");
        КонецЕсли;

    КонецФункции

Приветствуются любые замечания и советы.

Ссылка на проект: https://github.com/parshin/kkt

Основная информация находится в документации к ККТ в руководстве программиста.

ККТ Python WEB-сервис HTTP-сервис чек Атол 54-ФЗ WSGI Apache Linux.

См. также

ККТ-ОНЛАЙН 54-ФЗ: Обработка для работы онлайн касс АТОЛ, ШТРИХ, VIKI PRINT и т.д. МАРКИРОВКА + ЭКВАЙРИНГ + БЕСПЛАТНЫЙ ДЕМО

ККМ Кассовые операции Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения 1С:CRM ПРОФ, КОРП Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1). Подключайте любую онлайн кассу к практически любой конфигурации. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows ЭМУЛЯТОР + ЭКВАЙРИНГ + МАРКИРОВКА + ПОДДЕРЖКА ФФД 1.2

4800 руб.

27.02.2017    761696    4659    9495    

2780

54-ФЗ. Очередь печати для ККМ. Обработки для подключения онлайн-касс к 1С 8 (поддержка Маркировки) + Эмулятор + ФФД 1.2

ККМ Кассовые операции Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки.

5400 руб.

25.05.2015    315948    1839    3007    

990

Печать кассовых чеков на одну ККМ с нескольких рабочих мест для 1С:УТ11.х, КА2.х, Розница 2.х, УНФ, ERP 2.х, БП 3, БГУ2

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение конфигурации для УТ 11.4, 11.5, КА 2.4, 2.5, Розница 3.0, 2.3 и 2.2, УНФ 1.6, УНФ 3x, ERP 2.4, 2.5, БП 3, БГУ2 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

4000 руб.

27.08.2018    115578    973    562    

826

Обработка 1С для печати чеков на кассе ККТ АТОЛ.ОНЛАЙН

ККМ Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Печать чеков по документам 1С РеализацияТоваров (РасходнаяНакладная), КорректировкаРеализации, СчетНаОплату, ЗаказКлиента, ЧекККМ, ПоступлениеНаРС. Соответствует требованиям 54-ФЗ. Одна облачная касса может использоваться всеми подразделениями организации, без привязки к рабочим местам. Электронные чеки отправляются на email клиента и всегда доступны в 1С, по требованию можно распечатать. Легкая настройка: после регистрации кассы на сайте АТОЛ.ОНЛАЙН, в обработке необходимо указать логин, пароль и идентификатор группы ККТ (берутся в личном кабинете АТОЛ.ОНЛАЙН). Одну кассу можно использовать с 1С при расчетах с физ. и юр. лицами и для интернет-магазина. HTTPS протокол интеграции API v4 / ФФД 1.05 или API v5 / ФФД 1.2.

21600 руб.

23.08.2022    10465    27    4    

22

Обмен между 1С:Розница и Frontol 6 по организациям (Розница - Фронтол)

ККМ Розничная торговля Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен между 1С:Розница и Frontol 6 при торговле от нескольких организаций, а также ряд других полезных функций. Данный модуль незаменим для тех, кто ведёт учет по нескольким организациям в 1С:Розница, а на РМК (рабочее место кассира) установлен Frontol, или планируется его установка. Подходит для 1С:Розница 2.3./ 3.0, 1С:УНФ 3.0

1500 руб.

22.03.2019    77699    382    474    

159

UTM Proxy для УТМ ЕГАИС (или как не пропустить дубль алкогольной марки и недостачу на кассе + Контроль МРЦ)

Розничная торговля ККМ Обмен с ГосИС Розничная и сетевая торговля (FMCG) Россия Акцизы Платные (руб)

Что такое УТМ прокси? УТМ прокси - это универсальное программное обеспечение для борьбы с дублями марок алкогольной продукции при розничной продажи. Данное программное обеспечение - это своего рода "прокладка" между кассовым ПО и УТМ ЕГАИС. UTM Proxy работает с любыми кассами, вот некоторые из них: miniPOS, рабочие места кассиров в конфигурациях 1С (в том числе и базовые версии), Фронтол и другие...

2400 руб.

16.11.2016    49269    472    60    

24

Пробитие чека ККМ с разных складов через РМК в УТ 11

Кассовые операции ККМ Платформа 1С v8.3 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

Расширение для 1С:Управление торговлей 11.5, которое позволяет пробивать чеки ККМ и списывать товар с разных складов. Склад списание товара можно указывать в табличной части рабочего места кассира (РМК).

5880 руб.

12.04.2023    7854    26    2    

23

K-SOFT: Печать через веб-сервер АТОЛ с нескольких рабочих мест. Управляемые формы + Бесплатная версия + Маркировка + Поддержка ФФД 1.2

ККМ Платформа 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Хотите серьезно ускорить печать чеков, или печатать с разных рабочих мест на один ккм? В этом вам поможет, веб-сервис (веб сервер) от фирмы АТОЛ, а данная разработка позволит интегрировать его с вашей программой 1С. Печатать чеки можно будет даже с мобильного телефона. Работает на любой платформе 1С управляемые формы и на любой операционной системе. Подойдет для конфигураций: Розница 2, Управление нашей фирмой, Управление Торговлей 11, Бухгалтерия 3, Комплексная автоматизация 2, ERP, ЗУП 3, БГУ 2, Управление холдингом, конфигурации Рарус и многих других отраслевых решений

3600 руб.

01.02.2021    47561    467    245    

152
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. maks_20 164 12.10.17 09:36 Сейчас в теме
Интересное решение. Подобную задачу делали немного другим способом: создавался регистр сведений, который накапливал сообщения и регламентное задание, которое делало рассылку сообщений. Соответственно покупатель через интернет-ресурс делал заказ, заказ прилетал в 1с. Если заказ оплачен, то формировался документ оплаты, по нему печатался чек и записывались данные в регистр вместе с контактной информацией покупателя. А дальше регламентом сообщение отправлялось на е-майл или на телефон (или и туда и туда). А если пользователи уже закрыли смену - предусмотрено автоматическое открытие?
2. parshin 78 12.10.17 11:14 Сейчас в теме
(1) Да, смена открывается автоматически. Только бумага меняется руками )
3. zaoproxy 36 13.10.17 09:49 Сейчас в теме
вы используете обычное соединение (Соединение = Новый HTTPСоединение(АдресСервера);) что не совсем безопасно.
нет проверки на валидность как чека, так и на право пробития чека.
так же в качестве недоработки данной технологии могу отметить не полноту данных в чеке. Постараюсь расшифровать: не учтена возможность учета продаж товаров по разным системам налогооблажения, а самое главное - если речь идет про дистанционную печать (интернет магазин) в чеке отсутствует какое либо упоминание про адрес электронной почты или номер телефона.
Вот такая ложка дёгтя.....
5. parshin 78 17.10.17 06:28 Сейчас в теме
(3)Спасибо за конструктивную критику!
4. forev8 14.10.17 19:14 Сейчас в теме
Интересное решение согласен. А как настроен хттп сервис? какой указан url c параметрами?
6. parshin 78 17.10.17 06:32 Сейчас в теме
(4)Http-сервис настроен на Apache через WSGI. URL http://192.168.x.x/kkt. Параметры передаются POST запросом.
7. dance000 18.10.17 12:22 Сейчас в теме
А почему вы использовали именно эту модель ККТ?
Есть же модели без печатающих головок, которые только формируют фискальный признак. Тогда и бумагу не надо будет менять!
8. parshin 78 18.10.17 12:35 Сейчас в теме
(7)Мы ведем не только онлайн торговлю, поэтому парк ККТ с печатающими головками. Но и на данном ККТ можно не печатать бумажный чек. Наши клиенты иногда просят бумажный чек отправить вместе с водителем например. Поэтому печатаем.
dance000; +1 Ответить
9. infosoft-v 867 25.10.17 14:02 Сейчас в теме
Илья, добрый день.
Спасибо за отличную идею.

Помогите разобраться с двумя вопросами:
1. Как организована или как можно организовать очередь печати? Если одновременно интернет магазин и 1С отправят сервису запрос на печать чека, проблемы будут?

2. Если от сервиса нужно более одного метода, как лучше это реализовать? Сейчас нужно Печать чека продажи, Печать чека возврата, Закрытие смены. После ввода формата ОФД 1.05 количество методов, я думаю возрастет.
10. parshin 78 25.10.17 15:31 Сейчас в теме
(9)Добрый день!
1. Очередь печати в данном примере не реализована, соответственно проблемы будут. А очередь очень нужна. И в интернет-магазине может быть несколько покупок одновременно. Я планирую реализовать очередь в 1С, т.к. в нашей схеме работы все оплаты через сайт сразу попадают в 1С. Настроена интеграция сайта, 1С и эквайринга через веб-сервисы. Реализовать, например, можно так: сохранять документы оплаты в порядке поступления в регистр сведений, а из регистра брать и отправлять на печать. В случае успешного пробития удалять запись из регистра. Или на стороне скрипта для пробития чека можно реализовать подобную схему. Каждый поступивший запрос сохранять в файл или бд, например, а потом читать из файла и удалять файл в случае успеха.

2. При вызове сервиса можно добавить в отправляемые данные json название метода, который нужно выполнить, ну а дальше в скрипте вызывать соответствующий метод драйвера.
infosoft-v; +1 Ответить
11. infosoft-v 867 25.10.17 20:55 Сейчас в теме
Илья, спасибо за ответ.
По второму пункту я так же думал.
По первому пункту вы дали информацию для размышления. Буду думать.
12. vsaranov 03.11.17 16:33 Сейчас в теме
Илья, благодарю за то, что делитесь своими наработками. Пожалуйста, подскажите, что нужно изменить в скрипте, что бы просто вывести чек на печать (сделать не фискальный чек)? Хотел бы отладить вывод нужных позиций, текста, посмотреть как выглядит чек, а касса уже фискализирована и работает.
13. vsaranov 08.11.17 12:09 Сейчас в теме
Илья, я у же разобоался, что невозможно отладить вид чека на фискализированном аппарате.
Хотел бы поинтересоваться, как вы указываете атрибуты? Например, нужно в чеке ФИО кассира, в вашем проекте я не нашёл установку каких-либо атрибутов. Нашёл, что в ДТО8 - был метод WriteAttribute(), которого нет в ДТО9:
driver.AttrNumber = 1021;
driver.AttrValue = "Старший кассир Иванов И.И.";
driver.WriteAttribute();
, а как это делается в ДТО9 не понятно.
14. vsaranov 08.11.17 15:16 Сейчас в теме
Сам отвечу. Если никаких параметров не устанавливать, то должны печататься поля установленные в самом фискальном регистраторе. Эти параметры можно изменить используя утилиту "Тест драйвера ККМ" в параметрах ККМ. Добавление параметров в чек через ДТО9 описано тут http://forum.atol.ru/index.php?showtopic=32543
Отсутствие документации убивает, но в основном время :)
15. parshin 78 08.11.17 15:22 Сейчас в теме
(14)Добрый день!
Я не устанавливаю имя кассира, но предполагаю что метод driver.put_Operator(self, value) выполняет то что вам нужно.
Подробнее см. руководство программиста.
value - Номер оператора (кассира):
 1 – Кассир 1.
 ...


 28 – Кассир 28.
29 – Администратор.
30 – Системный администратор
16. vsaranov 20.11.17 10:18 Сейчас в теме
Для установки нужных параметров в чеке, в скрипт нужно добавить:

# Имя и должность кассира
driver.put_FiscalPropertyNumber(1021)
driver.put_FiscalPropertyPrint(1)
driver.put_FiscalPropertyType(5)
driver.put_FiscalPropertyValue(u'Кассир: Иванова Мария Ивановна)
driver.WriteFiscalProperty()

# Email покупателя (ОФД отправит электронный чек)
driver.put_FiscalPropertyNumber(1008)
driver.put_FiscalPropertyPrint(1)
driver.put_FiscalPropertyType(5)
driver.put_FiscalPropertyValue(check_data['DocEmail'])
driver.WriteFiscalProperty()

# Применяемая система налогооблажения в чеке:
# ОСН - 1
# УСН доход - 2
# УСН доход-расход - 4
# ЕНВД - 8
# ЕСН - 16
# ПСН - 32
driver.put_FiscalPropertyNumber(1055)
driver.put_FiscalPropertyValue(1)
driver.put_FiscalPropertyType(1)
driver.WriteFiscalProperty()
17. parshin 78 20.11.17 14:45 Сейчас в теме
18. user930254 06.03.18 18:52 Сейчас в теме
А если касса локально (USB) подключена, как будет выглядеть conf.py?
19. parshin 78 29.03.18 12:00 Сейчас в теме
(18) Не могу ответить т.к. нет оборудования под рукой для проверки. Возможно придется дописывать скрипт.
Не совсем понимаю зачем использовать http-сервис, если касса подключена локально. Или вы используете ПО, которое не может работать с торговым оборудованием? Хотя может у вас стоит одна касса, а пробивать чеки нужно с нескольких рабочих мест.
20. FreeArcher 158 19.10.20 04:48 Сейчас в теме
Подскажите выполняю запрос в PostMan из документации:
127.0.0.1:16732/api/v2/serverInfo
Получаю ошибку

<ht ml>

<head>
    <met a http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Error 404 Not Found</title>
</head>

<body>
    <h2>HTTP ERROR 404</h2>
    <p>Problem accessing /api/v2/serverInfo. Reason:
        <pre>    Not Found</pre>
    </p>
    <hr><noindex><a class="is-fancybox" href="/redirect.php?url=aHR0cDovL2VjbGlwc2Uub3JnL2pldHR5" target="_blank" rel="nofollow">Powered by Jetty:// 9.4.9.v20180320
    <hr />

</body>

</html>
Показать



На все запросы такая ошибка.
Драйвер стоит у меня локально, ККТ подключена по сети на адресс 192.168.0.121:5555.
Здесь (http://127.0.0.1:16732/settings) настройки прописал.

Адрес 192.168.0.121:5555 пингуется и драйвер находит ККТ.

Что-то упустил, но не могу понять что, подскажите?
Может ещё кроме драйвера и веб сервера нужно поставить?
21. parshin 78 19.10.20 08:31 Сейчас в теме
(20)Здравствуйте!
Вы используете веб-сервер от Атол. Эта статья не имеет к нему отношения. Она была написана до того как Атол сделали свой веб-сервер.
Вот тут есть примеры работы https://infostart.ru/1c/articles/974680/
Или обратитесь с вопросом на форум Атол.
Оставьте свое сообщение