1с обмен с атол
Вокруг онлайн касс в последнее время дикий ажиотаж, 1 июля 2019 заканчивается последняя отсрочка, поэтому и мне пришлось заняться этим вопросом. Тем, у кого 1С или другая система особо можно не напрягаться, но если у вас собственная самописная система, то на ваши плечи ложится еще и интеграция с онлайн-кассами.
Мой опыт пригодится для интеграции с кассами Атол в режиме обмена данными по сети, ваша программа может отправлять данные на web-сервер Атол как на локалхост, так и по локальной сети, можно хоть из браузера AJAX отправлять, хоть с сервера через CURL, поэтому, неважно на каком языке написан ваш корпоративный софт, всё кроссплатформенно.
Мне на опыты попалась касса Атол 30ф — это такая простая печатная машинка с черным ящиком (ФН), так раз подходит, когда вся логика по составлению заказов лежит на внешнем софте, а не на софте, встроенном в кассу. К тому же, аппараты такого типа относительно недорогие, по сравнению с андроидными аналогами.
Отдельно хочу заметить, что «специалисты» некоторых компаний, занимающиеся поддержкой вообще не в курсе, что у Атол с 10й версии есть встроенный веб-сервер в драйвере, который принимает JSON-задания, более того, этот драйвер можно установить и на linux, судя по количеству готовых решений на малинках, могу предположить что там тоже можно установить, в дистрибутиве 10й версии драйвера установщик для arm присутствует.
Планируемая схема примерно такая — есть CRM, которая крутится на сервере в локальной сети, ее открывают из браузеров, с серверной стороны на PHP через curl будут отправляться чеки и печататься на кассе. А сама касса подключена к любому компу на Windows в этой же сети.
Говорят что если не активировать кассу, то она может работать в режиме принтера и печатать что чек недействительный, но мне это проверить не удалось, пришлось делать копеечные операции продажи и возврата.
Драйвер десятой версии скачиваем вот тут.
Перед установкой нужно установить Java той же разрядности, что и драйвер, иначе галочка web-сервер не будет доступна, если устанавливаете 64 битный драйвер ККТ, то и Java x64.
Вроде бы по логике нужно на 64 битную систему ставить 64 битный драйвер, но некоторый софт 32 битный не сможет с ним работать (вроде и к 1С такое относится, если она 32 битная).
В конце установки есть галочка — конфигурировать веб-сервер, если ее не поставили, то надо зайти в браузере на 127.0.0.1:16732/settings, поставить галочку «активировать сервер» и сохранить.
После этого нужно перезагрузить сервер через ПУСК->АТОЛ->перезапустить…
Еще сразу хочу предупредить, если запустить веб-сервер, то локальные приложения не смогут получить доступ к ККТ, я долго маялся, установил драйвер, запустил тест драйвера ккт, а он мне говорит что порт занят и всё, звонил в техподдержку местного продавца, там сказали не знаем что делать, потом десять раз перегружал комп, переустанавливал драйвер, ничего не помогает.
В общем, после того, как вы активировали и перезапустили сервер, а перед этим выключили сервер и проверили через поставляемую утилиту печать простого текста или просто проверили связь — можно приступать.
Этот веб-сервис не имеет никакой защиты по паролю, поэтому нужно сразу настроить брандмауэр Windows или другой софт, чтобы по порту 16732 могли обращаться только нужные компы, в моей ситуации это сервер на котором крутится CRM.
Общение с веб-сервисом вообще отдельная тема, очень интересная.
- Генерируем уникальный uuid для задания
- Отправляем задание методом POST
- Долбимся на веб-сервис, ожидая результата задания с нашим UUID, может быть так, что несколько секунд у нашего задания будет висеть статус wait, а может возникнуть error, если в запросе что-то не так сформировали.
Тут есть такие недоработки, которые я еще поправлю
- Округление дробей при подсчете сумм, нужно округлять до копеек, иначе можно получить 1.000000001 или 0.999999999
- При правильном написании остальной логики программы такое обычно не возникает, но в ходе тестов я поймал себя на том, что задание вернуло результат error, а я ждал ready
В целом можно и с сайта в будущем собирать эквайринги, если в них не будет онлайн-чеков, пока не определились какой эквайринг привинтить. Но решение такое, больше наверно как идея для решения, время покажет как приживется эта касса.
Все ближе новогодние праздники и с ними переход на НДС20% и ФФД1.05. Почти все производители уже подготовились к нему и отчитались о порядке перехода на новый режим работы. Но не все пользователи до конца понимаю что им делать. Для работы в новом режиме понадобится обновить ККТ, драйвера и вашу конфигурацию. Кстати, обновления для конфигураций с поддержкой НДС20% 1С уже выпустила, поэтому самое время начать обновляться, если вы еще этого не сделали.
Для работы нового режима на ККТ потребуется последние версии драйвера ККТ. Работу с НДС 20% поддерживают все версии начиная с 8.16.1 или 10.4.1, которые вышли еще в ноябре. Последнюю версию можно скачать в свободном доступе с центра загрузки АТОЛ.
В настройке нет ничего сложного, просто выполняем все шаги по порядку:
1. Установка драйверов
Для работы ККТ потребуется последние версии АТОЛ Драйвер ККТ версии 10.4.2. Работу с НДС 20% поддерживают все версии начиная с 10.4.1.
Качаем его с dpkg -i fptr10-test-util_10.4.2_i386.deb dpkg -i libfptr10_10.4.2_i386.deb dpkg -i libfptr10-gui_10.4.2_i386.deb
После этого заново запускаем установку пакетов. Обратите внимание что ставить нужно драйвер той же битности что и платформа 1С. Если у вас 32-битная 1С работает на 64-битной системе, то ставим 32-битный драйвер. Иначе 1С не найдет подходящих драйверов. Это же относится и к работе в LINUX.
2. Подключаем и настраиваем ККТ
2.1. Настройка работы через USB
Большинство ККТ Атол (Кроме 30Ф и 11Ф) настроены для работы через COM. Для переключения на USB делаем:
- Выключить ККТ
- Зажать кнопку промотки чека
- Не отпуская кнопку включаем ККТ
- Дождаться пятого звукового сигнала
- ККТ распечатает на чеке пункты сервисного режима.
- Нажать два раза кнопку прокрутки чека (должно быть два звуковых сигнала).
- Распечатается чек с параметрами канала связи.
- Три раза нажать кнопку прокрутки чека (три звуковых сигнала).
- Распечатается "USB включен" и вернется в сервисный режим.
- Нажать один раз кнопку прокрутки чека, ККТ перейдет в рабочий режим.
Для передачи данных в ФФД необходимо настроить утилиту EOU.
При подключении по USB в системе появятся два COM-порта. Один используется для работы с ККТ, второй для утилиты EOU. В тесте драй вера проверяем на каком потру висит ККТ, другой прописываем в настройках EOU.
Если ККТ подключена через USB, то для передачи чеков в ОФД необходимо настроить службу EOU. Если у вас на компьютере установлена 8 версия драйверов, то там есть замечательная утилита "Управление драйверами", через которую очень легко настраивается служба EOU.
2.2 Настройка ККТ в режиме TCP/IP (Работа по сети, С терминального сервера RDP)
Проще всего выполнять настройку через утилиту "Тест драйвера ККТ". Открываем утилиту тест драйвера и заходим в свойства ККТ.
Указываем номер порта на котором работает ККТ (для его определения можно воспользоваться Поиском) и нажимаем кнопку "Параметры ККТ":
Здесь выполняется настройка режимов работы ККТ. Нам потребуются только два раздела: "2. Канал связи" и "15. ОФД".
Во разделе "2 Канал связи" настраивается интерфейс, на котором будет работать ККТ.
В нем прописываем IP-адрес ККТ и параметры Вашей сети.
- Канал обмена: Ethernet
- IP-адрес (Ethernet): ххх.ххх.ххх.ххх - Здесь прописываем свободный IP из вашей подсети, например 192.168.1.17
- маска подсети: 255.255.255.0
- Шлюз по умолчанию: ххх.ххх.ххх.ххх - Адрес шлюза вашей сети (основного роутера), например 192.168.1.1
В разделе "15 ОФД" настраивается канал обмена с ОФД. Если ККТ работает по сети, то необходимо переключить канал обмена на Ethernet, если по USB, то USB (EoU).
Если ККТ новая, то не забываем менять настройки в разделе 9 Клише.
После изменения всех настроек нажимаем кнопку применить и выключаем кассу. Теперь можно отключить кабель USB и подключить ККТ с помощью Ethernet кабеля к вашей локальной сети.
Настройка окончена, включаем ККТ. При загрузке она будет печатать два чека, один что ККТ готова к работе, второй состояние сети, на котором выводиться текущий IP-адрес ККТ.
Теперь можно проверить связь с помощью утилиты "Тест драйвера". Указываем порт TCP/IP и IP-адрес ККТ и нажимаем кнопку "Проверка связи". В ответ она должна сообщить свою модель, номер и версию ПО.
При работе ККТ по сети она будет самостоятельно передавать данные в ОФД. Настраивать службу EOU уже не надо!
3. Настройка в 1С.
Рассмотрим настройку ККТ на примере демонстрационной базы "Управление производственным предприятием". В типовых конфигурациях на обычных формах вся настройка выполняется в форме "Подключение и настройка торгового оборудования".
Переходим на вкладку "ККТ с передачей данных" и добавляем новое оборудование.
Обработку обслуживания с необходимой Native-компонентой можно скачать во вложении.
В обработке выбираем нужный способ подключения и порт для связи с ККТ. Для проверки корректности настроек можно нажать на кнопку "Тест устрйоства"
Указанная обработка использует стандартные процедуры из общих модулей: ПодключаемоеОборудованиеУниверсальныйДрайверКлиент и МенеджерОборудованияКлиентСервер.
При работе в LINUX/Windows настраивается одинаково. Если в обработке пишет что не установлен драйвер, то скорее всего установлены драйвера не той "битности". Готово, если вы уже обновили ККТ, то она готова к работе с Новыми ставками НДС.
4. Служебные операции
В процессе работы иногда требуется проверить передачу данных к ОФД или закрыть смену на ККТ. Эти операции можно выполнить через утилиту "Тест драйвера". Но удобнее использовать эти функции из обработки обслуживания. Для этого откройте форму "Подключение и настройка торгового оборудования", выберите нужную ККТ в списке и нажмите кнопку "Параметры фискализации".
В открывшемся окне есть меню "Ручное управление" через которое можно выполнить:
Требования законодательства к ККТ постоянно меняются, объем передаваемых в ОФД данных расширяется, кроме фискальных данных современные ККТ также должны передавать коды маркировки, которая внедряется все шире и шире. Но и разработчики ККТ не стоят на месте, на так давно компания АТОЛ представила принципиально новую платформу ПО для ККТ - 5.0, которая разработана с учетом всех современных требований. Вместе с новой платформой были пересмотрены и некоторые уже привычные решения по взаимодействию с ККТ, о которых мы сегодня и поговорим.
Чтобы понять, что такое платформа 5.0 и для чего она нужна сделаем краткий экскурс в историю. ККТ старого образца использовали платформу 2.0, предназначенную для работы с ЭКЛЗ, в выходом 54ФЗ и появлением онлайн-касс платформа 2.0 была доработана под новые требования и стала называться платформа 2.5. Именно ее продолжали и продолжают использовать большинство ККТ АТОЛ.
Но устаревшая платформа несет много ограничений и не позволяет эффективно реализовывать новые требования, поэтому разработчики решили разработать полностью новое ПО только под современные требования. Так появилась платформа 5.0, за счет отказа от поддержки устаревших стандартов и принципиально новой архитектуре она быстрее работает и эффективнее справляется со своими задачами, облегчая жизнь как пользователям, так и разработчикам кассового ПО.
Многие функции, которые раньше обеспечивались средствами прикладного или дополнительного ПО перешли в саму кассу, например, разбор марки, теперь этим занимается сама ККТ, что значительно упрощает задачу разработчикам и пользователям, которые станут меньше зависеть от реализации поддержки нововведений в их программах.
В настоящий момент разработка платформы 2.5 прекращена, а с 2021 года прекратится ее поддержка. В настоящий момент все актуальные ККТ поставляются с платформой 5.0.
Как узнать платформу ККТ?
Узнать версию текущего ПО ККТ можно разными способами, самый простой - распечатать чек информации: Отчеты - 5 - Печать информации о ККТ.
Если вам требуется получить данную информацию удаленно, можно выполнить запрос JSON, для этого перейдите в Работа с json и в поле Задание введите:
Результатом будет набор информации о ККТ включающий в себя номер прошивки:
Настройка EoT (EthernetOverTransport)
Серьезное изменение коснулось передачи данных в ОФД для касс без прямого сетевого подключения. Платформа 2.5 использовала для этой цели технологию EoU (EthernetOverUSB), которая подразумевала использование стороннего ПО для взаимодействия с кассой и отправке данных из нее в ОФД.
Несмотря на то, что EoU показала себя достаточно надежной технологией, лишнее ПО в системе - это лишняя точка отказа, да и с точки зрения кроссплатформенности, к которой стремится АТОЛ, это выглядело не самым лучшим решением. Поэтому была реализована новая технология передачи данных EoT(EthernetOverTransport), которая может использовать любое подключение к хосту и не требует дополнительного ПО. Теперь ККТ сама передает данные в ОФД, единственное условие - кассовое ПО должно сохранять постоянное подключение к ККТ. Все настройки подключения к ОФД также выполняются в самой кассе. Это удобно, не нужно никакого дополнительного ПО, достаточно просто установить драйвер ККТ и подключить устройство.
Отличительной чертой устройств на платформе 5.0 при подключении их к ОС Windows является только один виртуальный COM-порт, который используется для взаимодействия с кассовым ПО, работа с EoU на прошивках 5.7.0 не поддерживается. На Linux ККТ по-прежнему подключается через USB, но работа с EoU также невозможна.
Это можно заметить в выпадающем списке выбора канала обмена, теперь там доступны только сетевые способы и EoT.
Сама же настройка EoT достаточно проста, вам потребуется указать в пункте 15 параметров ККТ адрес и порт используемого вами ОФД.
Будьте внимательны, отмечены случаи, когда порт ОФД сохранялся не с первого раза, поэтому рекомендуем тщательно проверять настройки перед началом эксплуатации кассы. Также можете пробить пробный чек, либо открыть или закрыть смену (проще говоря создать любой фискальный документ), а затем проверить состояние отправки документов в ФН - 1 -Статус информационного обмена. Количество непереданных документов должно быть равно нулю (на скриншоте отчет тестовой кассы с МГМ которая не осуществляет передачу данных).
Для проверки связи с ОФД можете выполнить Отчеты - 6 - Тест связи с ОФД, результат диагностики будет распечатан на кассовой ленте.
В ряде случаев может быть полезно ознакомиться с логом службы, который находится в:
Со стороны кассового ПО, в нашем случае это 1С, требуется поддержка постоянного соединения с кассой, это уже реализовано в последних версиях компоненты, остается убедиться, что вы используете версию не ниже 10.6.2.0. Однако здесь тоже может быть не все так просто, рекомендуем внимательно ознакомиться с нашей статьей: 1С:Предприятие 8. Исправляем ошибку "Некорректный код защиты / лицензия или номер" для ККТ АТОЛ.
EoU возвращается?
Как мы уже говорили, для работы EoT требуется поддержка со стороны кассового ПО, а именно поддержание постоянного соединения с ККТ. Но как показала практика не все разработчики смогли вовремя выпустить обновления и у многих возникли трудности с применением касс на платформе 5.0. Поэтому в прошивке 5.7.10 работа с EoU была возвращена, также обязательным условием является использование драйвера 10.8.0.0.
В диспетчере задач ККТ с данной прошивкой снова определяются двумя виртуальными COM-портами:
Но говорит ли это о том, что АТОЛ возвращает EoU и отказывается от EoT? Нет, в описании изменений прошивки 5.7.10 прямо указано:
Список изменений v. 5.7.10
Добавлен интерфейс EoU для завершения миграции;
Возвращение EoU временное, для того чтобы пользователи спокойно могли завершить миграцию на платформу 5.0, а у разработчиков было время спокойно выпустить обновления с полноценной поддержкой платформы 5.0.
Поэтому если ваше кассовое ПО позволяет использовать EoT уже сейчас, то следует использовать именно его, так как переходить на него все равно придется и лучше это сделать спокойно сейчас, чем пытаться все сделать в самый последний момент.
Для платформы ККТ Атол 5 версии и настройки передачи данных с помощью Ethernet over Transport процесс подключения к 1С максимально упрощён. Не надо смотреть никакие порты, а просто настраивать подключение, как описано в этой статье. Аппарат использует только один порт и через него осуществляет связь с ОФД и компьютером.
Для платформы Атол 2.5
Смотрим номера портов в диспетчере устройств
В моём случае COM4 занят для передачи данных между кассой и компьютер, а COM5 соответственно для передачи данных к оператору фискальных данных.
Чтобы посмотреть какая версия платформы у ККТ Атол, надо зайти в программу Тест драйвер ККТ, перейти в левом меню в «Отчёты» и выбрать пункт «Печать информация о ККТ». Если распечатался подобный чек:
А также присутствуют строки, подсвеченные красным цветом, то у вашего фискального регистратора пятая версия платформы, которая является последней на данный момент.
Также, характерным признаком пятой платформы — один занимаемый порт кассой, в отличие от двух портов на платформе 2.5. Когда вы подключали кассу к компьютеру, то смотрели занимаемые порты и знаете, где это.
Подключение кассового аппарата Атол к 1С
Открываем 1С и заходим в раздел Администрирование -> Подключаемое оборудование. Ставим в этом окне галочку «Использовать подключаемое оборудование».
Далее переходим в раздел «Подключаемое оборудование» и в выпадающем меню «Тип оборудования» выбираем ККТ с передачей данных:
Создаём новое подключение с такими настройками:
Драйвер оборудования — это установленный в 1С обработчик, который будет работать с установленной версией драйвера ККТ на компьютере.
Серийный номер — заводской номер ККТ. Можно посмотреть на обратной стороне вашей кассы, либо в информационном чеке.
Настройки в 1С
После записи экземпляра подключаемого оборудования, появится кнопка «Настроить». Заходим по ней в настройки и выбираем модель кассового аппарата, USB порт (COM порт для платформы 2.5) для подключения. В моём случае вот такие настройки:
Для пятой версии платформы Атола, все настройки ставятся автоматически и ничего в этом окне прописывать не надо. Просто проверьте на всякий случай корректность настроек с моим скриншотом, представленным выше.
Важный момент!Обязательно проследите наличие галочки у «Не отключаться от ККТ».
В силу особенностей работы Ethernet over Transport, если с 1С запущен одновременно тест драйвера, то в 1С касса не будет видна и не выполнит тест подключения.
Надо отключить кассу в свойствах драйвера и тогда пройдёт подключение в 1С и аппарат начнёт нормально работать и передавать данные в ОФД. Также справедливо и в обратную сторону, пока запущена 1С, вы не сможете включить фискальник в тесте драйвера.
Этот комментарий важен для 10-ой версии ДТО Атола и платформы 5-ой версии.
Добавление новой кассы в раздел кассы ККМ
Найти этот раздел можно через поиск, либо перейти в НСИ -> кассы ККМ. Просто добавляем новую и выбираем то оборудование, которое добавляли ранее.
Так выглядит это у нас:
Настройка 1С и подключение кассы Атол закончена. Теперь можно открыть смену и попробовать выбить чек. После чего зайдите в ОФД и проверьте отправку чеков. Если ОФД видит пробитые чеки, то всё работает корректно.
Читайте также: