Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Модератор: Дед Пахом

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8641
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 134 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

Привет всем !

Класс для разрешительной проверки КМ (кодов маркировки) через API ТС ПИоТ ЕСМ от АО «ЕСП».
Полный боевой комплект с описанием интерфейса API и примерами.

Реализованный в классе функционал полностью соответствует ПФС ЦРПТ (версия 1.14 / 26 сценариев)
для получения сертификата совместимости и допуска в промышленную среду работы с ТС ПИоТ. 😎

Благодарность за помощь на старте проекта: FinsoftRZ и Alex412.
Любые замечания, исправления и дополнения - приветствуются !
----------------------------------------------------------------------------------------------------
НАСТОЯТЕЛЬНО рекомендуем использовать актуальные версии классов LibCURL, cJSON и PrintF.

esp.png
esp.png (13.96 КБ) 9350 просмотров
Вложения
Honest-2026-04-27.rar
Версия от 27.04.2026 г.
(48.66 КБ) 143 скачивания
Последний раз редактировалось Игорь Столяров 09 Май 2026, 9:04, всего редактировалось 106 раз.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8641
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 134 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 06 Май 2026, 11:46 если в учетной системе имеется собственный механизм исключения дубликатов
Здесь ответ нужно разделить на два:

1. При проверке в ГИС МТ - проверяйте локально дубликаты КМ как считаете нужным;

2. При проверке в ТС ПИоТ - система сама будет проверять локальные дубликаты в ПО ЛМ при отсутсутвии подключения к ГИС МТ,
и устанавливать признак SOLD для проверямого КМ. А значит для этого нужно записывать выбытие КМ в БД ПО ЛМ.

В принципе, если есть время свободное, да удаль молодецкая - Вы можете самостоятельно анализировать результат
проверки всего пакета КМ и при установке флага isCheckedOffline = true проверять весь пакет по своей локальной БД КМ.
Без проблем и в этом случае не нужно записывать КМ в БД ПО ЛМ для отслеживания дубликатов выбытия.
Но от использования ПО ЛМ Вас это не избавит, т.к. всё равно ТС ПИоТ должен проверять по ней заблокированные ОГВ КМ.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
SergioRaguzini
Ветеран
Сообщения: 301
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 35 раз
Поблагодарили: 1 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение SergioRaguzini »

Спасибо за оперативный отклик, но прошу уточнить:
Игорь Столяров писал(а): 06 Май 2026, 12:01 ...
При проверке в ТС ПИоТ - система сама будет проверять локальные дубликаты в ПО ЛМ при отсутсутвии подключения к ГИС МТ,
и устанавливать признак SOLD для проверямого КМ. А значит для этого нужно записывать выбытие КМ в БД ПО ЛМ.
...
Т.е., например, КМ успешно прошла проверку через пр-ру Honest::CheckReceipt, далее анализируем передачу чека в ФР, если чек в ФР закрыт корректно, то выполняем запись КМ с использованием пр-ры Honest::EditSoldList,
если же чек в ФР не закрылся (например, нет чековой ленты), то тогда, после устранения ошибки ФР, делаем повторную попытку передачи в ФР чека и, если, на этот раз удалось безошибочно закрыть, то выполняем Honest::EditSoldList
Так?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8641
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 134 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 06 Май 2026, 12:47Так?
Да. Успешное создание фискального кассового чека (печать на ленту или электронный чек) означает передачу
КМ из содержания чека Вашему ОФД и далее в "Честный ЗНАК", где фиксируется выбытие КМ для On-Line проверки.

А Вы после этого, на своей стороне, фиксируете выбытие этих же КМ в БД ПО ЛМ или своей БД для Off-Line проверки,
на то случай если БД ГИС МТ будет не доступна On-Line. Конкретно ТС ПИоТ это переключение проверки выполняет сам.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5988
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 25 раз
Поблагодарили: 88 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение finsoftrz »

Если кассовое ПО само умеет проверять дубли марок, то использовать для этого ЛМ не обязательно. Это вспомогательный механизм, не обязательный для использования. Я не стал такое реализовывать, так как будут еще всякие заморочки с резервным копированием/восстановлением базы ЛМ, которая и так периодически может на свое усмотрение очищаться и требовать инициализации. Буквально сегодня такое видел в нескольких магазинах.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8641
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 134 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

finsoftrz писал(а): 06 Май 2026, 15:11 так периодически может на свое усмотрение очищаться и требовать инициализации
Есть такое дело ! ПО ЛМ реализовали в виде BackEnd, как REST сервер.
И это классно, делайте FrontEnd хоть на Windows, хоть на распилочных "русских" Linux.

Но вот когда этот REST сервис с суверенной БД Енисей стали ставить на ноутбуки с 4 GB RAM,
торрентами и несколькими бесплатными антивирусами - всё пошло немного не по плану ... :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
SergioRaguzini
Ветеран
Сообщения: 301
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 35 раз
Поблагодарили: 1 раз

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение SergioRaguzini »

Привет Всем!
Прошу помощи в следующем - при попытке выполнить пр-ру "Удалить КИ всех проданных товаров" PIoT::DelAllKI(gContact), получаю ошибку:
piot_img1.png
piot_img1.png (6.92 КБ) 88 просмотров
список должен быть пустой, т.к. пр-ру Honest::EditSoldList еще не использовал, может в этом и проблема что "пусто"?
Отладочный Honest_PIoT_lmSold_Request.txt содержит:

Код: Выделить всё

https://tspiot.sandbox.crptech.ru/api/v3/lmSold?skip=0&limit=100
а ответ Honest_PIoT_lmSold_Response1.json:

Код: Выделить всё

{"timestamp":"2026-05-12T17:09:05.477+00:00","status":404,"error":"Not Found","path":"/api/v3/lmSold"}
При этом иные пр-ры, например, Honest::CheckReceipt(gContact, qCodes, gVerified) или LOC:Honest.PIoT_Info(gInfo) выполняются корректно.
установлен следующий ЛМ:
piot_img2.png
piot_img2.png (8.71 КБ) 88 просмотров
Что делаю не так?

Спасибо
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8641
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 134 раза

Класс для API ТС ПИоТ ЕСМ от АО «ЕСП»

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 12 Май 2026, 20:13 Что делаю не так?
Всё. :D
Вы пытаетесь заставить ТС ПИоТ на тестовом стенде ЦРПТ очистить Вашу локальную БД ПО ЛМ.
А он сопротивляется. И выдаёт вполне логичный HTTP статус:
• 404 — Запрашиваемая информация не найдена;
Нужно установить локальный ТС ПИоТ ЕСМ и уже через него штатно взаимодействовать с Вашей БД ПО ЛМ.
Ну или удалять записи через процедуру прямого взаимодействия с ПО ЛМ: POLM::DelAllKI(gContact)

Код: Выделить всё

  ! Удалить КИ всех проданных товаров 
  If Loc:gContact.bPIoT
     PIoT::DelAllKI(Loc:gContact)
  else   
     POLM::DelAllKI(Loc:gContact)
  end  
Сейчас всё уже сводится к штатной работе с локальным ТС ПИоТ, т.к. on-line стенд, в принципе, не обеспечивает весь функционал.

У них было время. Но оно закончилось. (С) Бугония :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Ответить