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

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

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

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

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

Привет всем !

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

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

Благодарность за помощь на старте проекта: FinsoftRZ и Alex412.
Любые замечания, исправления и дополнения - приветствуются !

Список изменений в версии от 28.05.2026 г.
----------------------------------------------------------------------------------------------------
- Завершена поддержка работы с API ТС ПИоТ версии 2 (в т.ч. и в ЕСМ ПО ЛМ);
- Поддержка изменений в ЕСМ от АО "ЕСП" версии 1.6.3;
- Получение через ТС ПИоТ токена для инициализации ПО ЛМ;
- В сообщение об ошибке показаны версии API и хост для каждого сервиса;
- Добавлены ссылки Национального каталога и получения API KEY доступа;
- Получение номера товарной группы по коду GTIN из Национального каталога;
- Устранены проблемы по запросам и внесены изменения в примеры.
----------------------------------------------------------------------------------------------------
Рекомендуем использовать актуальные версии классов LibCURL, cJSON и PrintF.

esp.png
esp.png (13.96 КБ) 52139 просмотров
Вложения
Honest-2026-05-28.rar
Версия от 28.05.2026 г.
(58.52 КБ) 40 скачиваний
Последний раз редактировалось Игорь Столяров 28 Май 2026, 21:56, всего редактировалось 124 раза.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
zmi
Посетитель
Сообщения: 43
Зарегистрирован: 26 Октябрь 2017, 21:51

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

Сообщение zmi »

Игорь, что-то у меня 21-й тест "сломался", а именно: как и положено осуществляется перевод в режим "Авария" с выдачей соответствующего сообщения, но сразу после этого вместо пропуска проверки и разрешения продажи возникает незапланированное сообщение:
ВНИМАНИЕ ! ВЫПИСКА КМ ЗАБЛОКИРОВАНА.
Молоко Сценарий 1, 2, 5, 7, 14, Авария
0104670540176099215LpGKy93dGVz
Ошибка проверки в ТС ПИоТ:
Это и на оригинальной версии класса от 28.05.2026 (только точку поменял на https://tspiot.sandbox.crptech.ru )
Посмотрите, плиз: или я опять что-то недоучел (в последней версии) или всё же ошибочка закралась.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8662
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 138 раз

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

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

Добрый день !

Специально для Вас проверил - всё прекрасно работает.

1. Выписываем КМ из 21 сценария (ошибка 203) и получаем сообщение о проблеме:

1.jpg

2. Продажа разрешена и никаких других сообщений я не вижу:

2.jpg

3. Ну и далее выписка уже идёт без сообщений об ошибке 203 (что неправильно, но это уже совсем другая история).
Я выписал несколько марок из сценариев с разрешённой продажей.

3.jpg
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
zmi
Посетитель
Сообщения: 43
Зарегистрирован: 26 Октябрь 2017, 21:51

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

Сообщение zmi »

Игорь, спасибо большое! И за быстрый ответ тоже.
А, теперь понял, это не в классе сообщение, а я выдаю после обработки HonestClass.CheckOneCode, которая возвращает код 254 ("нет данных проверки").
Далее идет проверка на соответствие цены по bSetPrice.
И вот тут, по-видимому, надо добавить проверку на работу в аварийном режиме - корректно ли будет проверить флаг PIoT:FlagError203 ?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8662
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 138 раз

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

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

Пожалуйста.

Не хотел бы Вас расстраивать, но метод HonestClass.CheckOneCode() выполняет проверку КМ через ГИС МТ,
и вообще не имеет никакого отношения, ни к ТС ПИоТ, ни к флагам аварийного режима / переустановки цен. :D

Посмотрите пожалуйста файл примеров, там использование методов класса разделено на секции.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
zmi
Посетитель
Сообщения: 43
Зарегистрирован: 26 Октябрь 2017, 21:51

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

Сообщение zmi »

Упс, пардоньте, промазал с копипастом...(( Конечно же использую Loc:Honest.PIoT_CheckOneCode из этого примера
! Проверка кода маркировки в GS1 при выписке с получением результата для самостоятельного разбора
If Loc:Honest.PIoT_CheckOneCode(gOneCode,dSalePrice,gOneResponse) > 0
! Есть проблемы -> результат в gOneResponse
Honest::Message('Проблема: ' & gOneResponse.LockName)
...
И проблемка в том, что в аварийном режиме PIoT_CheckOneCode возвращает 254, хотя при этом gOneResponse.LockFlag=0 и gOneResponse.LockName=''.
Добавил в проверку на блокировку выписки gOneResponse.LockFlag<>0
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8662
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 138 раз

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

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

zmi писал(а): 03 Июнь 2026, 22:55 Упс, пардоньте, промазал с копипастом
У Вас с этим максимально какая-то беда. В прошлый раз мы разбирали кривой копипаст как сканерозаменитель ... 🤦‍♀️
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8662
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 138 раз

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

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

Дошел до проверки в офлайн режиме, это пункты 5.17 - 5.20.
ЛМ ЧЗ установлен и инициализирован http://127.0.0.1:5995.
Использую значение PIoT:RootHost Equate('https://tspiot.sandbox.crptech.ru') ! SandBox ЦРПТ
Предполагаю, что для этих тестов необходимо "вырубить инет". Отключаюсь от вай-фая.
Добрый день !

Не правильно ! Когда Вы работаете с тестовым стендом ЦРПТ - то по факту работаете в облаке.
Т.е. "подключаетесь" к удалённому компьютеру, который выполняет для Вас операции.
Если Вы отключите инетернет - то просто потеряете связь с облачным тестовым стендом ЦРПТ. 🤷‍♀️

И как следствие - при работе со стедом ЦРПТ Вам вообще не нужен установленный локальный ПО ЛМ.
Потому что ТС ПИоТ использует ПО ЛМ установленный на стенде (т.е. на сервере ЦРПТ)

Проще один раз увидеть - сделал тест для сценария 5.17 в самом простом и понятном варианте.
Собираем и смотрим. Результат:

1.jpg

Открываем в папке DEBUG лог ответа сервиса и видим полный результат:

2.jpg

Что собственно нам и требовалось - код маркировки из сценария 5.17 успешно прошёл проверку
в режиме OFF-LINE (т.е. с использованием ПО ЛМ установленном на стенде ЦРПТ)
Вложения
_TEST.rar
Тестовый пример - сценарий 5.17
(57.26 КБ) 3 скачивания
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
StillZero
Ветеран
Сообщения: 462
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Благодарил (а): 3 раза
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение StillZero »

ОК, спасибо! Теперь понятно.

Еще один момент, на сайте https://tspiot.sandbox.crptech.ru/mark/17?mode=online указан код для теста 0104607010350246215kRdG-1%2(UmV, а в примере тот же код + <29>93dGVz.
Почему?
по аэродрому...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8662
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 37 раз
Поблагодарили: 138 раз

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

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

StillZero писал(а): 05 Июнь 2026, 7:01Почему?
Ну здесь всё вообще просто. :D

На указанном Вами сайте показан CIS - т.е. код идентификации из КМ.
А при сканировании - мы получаем полный код марки в GS1 (он показан на сайте в BASE64).

Собственно, если мы декодируем код с сайта - то получим GS1 из примера:

1.jpg
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Ответить