Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

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

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Привет всем !

Класс для выполнения разрешительной проверки КМ (кодов маркировки)
через API ГСЦМ "Честный ЗНАК" (ГИС МТ + ПО Локальный Модуль) и ТС ПИоТ.

Полный боевой комплект с описанием интерфейса API и примерами.

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

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

2.jpg
Вложения
Honest-2026-02-15.zip
Версия от 15.02.2026 г.
(43.28 КБ) 3 скачивания
Последний раз редактировалось Игорь Столяров 15 Февраль 2026, 20:24, всего редактировалось 56 раз.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

Я не про это имел ввиду. Сценарий, если недоступен пиот, то выдаем сообщение кассиру об этом, потом проверям марку по ЛМ. После этого делаем самостоятельно проверку только по ЛМ (без обращения к пиот) какое-то время, потом снова пробуем через пиот.
Как они собираются определять, проблема с доступом к пиот или пиот отсутствует, хз. Скорее всего, никак. :lol:
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

Фирмой 1С в части ТС ПИоТ ведется работа в двух направлениях:
Сертификация 1С:ПИоТ в составе программных продуктов 1С - для ограниченного списка ККТ - Меркурий, РР-Электро и другие;
Интеграция с ТС ПИоТ ОТ ЕСП для ККТ Атол, Пос-Центр, Дримкас.
По мере выпуска данные решения будут доступны всем участникам рынка.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 36 раз
Поблагодарили: 123 раза

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Нам то что с этого ? Никакой полезной информации ...
1C сертифицирует ПИоТ в составе своих продуктов + 1С интергрирует ЕСП в свои продукты.
Они ещё до Нового года это говорили. Может быть быть завести отдельную тему "I LOVE 1С" ? :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

Они не будут делать свой пиот для самых распространенных ккм (включая атол). Вопрос, а почему? Кто-то недавно еще писал, все будет в рамках ИТС. Напомните, кто это был? :lol:
Нам полезно, что у нас клиенты будут в таких же условиях, как у них.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 36 раз
Поблагодарили: 123 раза

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Я не обресечиваюсь по пятницам. Я говорил. :D
1С пока ещё стоимость и условия для своего ПИоТа не объявлял. Возможно в связи с его отсутствием.

А с ККТ наверно всё просто. Точнее прагматично. Сделать ПИоТ без поддержки производлителя ККТ низя.
Мелкие производители ККТ рады сотрудничеству с 1С. Лидеры рынка хотели бы за это денег. Но 1С их платить не хочет. 🤷‍♀️
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

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

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

А ЕСП назначен для выполнения ПР РФ №303 по увеличению налогов. Предложение от которого нельзя отказаться. :D
Меня сейчас больше интересует какой будет следующий ход ЦРПТ. Будут загонять продаванов в кассу ЕСП. Но как именно ?
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

Они еще с пиотом весь 2026 год будут разгребать.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 36 раз
Поблагодарили: 123 раза

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Разгребать обязательно будут, но это рабочий процесс.
А бизнес-план нужно выполнять. Энтузиазма добровольно отдать 5000 руб. не наблюдается.

Ну вот работает у пользователя программа. Старая или даже 2026 г., но без поддержки ПИоТ.
Предположим (!!!) 01.03.2026 г. отключат запросы на разрешительную проверку КМ в ГИС МТ.

Программа молча переключиться на ПО ЛМ и пользователь об этом даже не узнает.
Чеки печатаются. Теги в чеках заполнены корректно. Это нужно ходить по каждому магазину. :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

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

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Игорь Столяров писал(а): 12 Февраль 2026, 20:27 Будут загонять продаванов в кассу ЕСП. Но как именно ?
Собственно я разобрался с этим вопросом.

Сейчас ПМСР подключается к ПО ЛМ (версия 1.5.2) для проверки чека в Off-Line через имя / пароль.
Обычно все ставят admin/admin по умолчанию.

После обновления ПО ЛМ до версии 2.1 (?!) для подключения к ПО ЛМ потребуется токен, который
будет генерится ТС ПИоТ при подключению к нему ПО ЛМ.

Нет ТС ПИоТ -> Нет токена -> Нет доступа к ПО ЛМ -> Нет Off-Line проверки КМ в для заполнения тега 1265 в кассовом чеке.
Давай досвиданья ! :D

P/S:
Запустили ТС ПИоТ на боевое дежурство. Всё OK !
Там есть мелкие исправления с русским именем ПМСР, я их опубликую позже.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5815
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 24 раза
Поблагодарили: 85 раз

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение finsoftrz »

Пиот не работает по какой-то причине - нет токена - нет доступа к лм...
Чем отличается такой сценарий? По идее, только временем действия токена. То есть, могут выдавать на сутки, потом блокировать продажи.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 36 раз
Поблагодарили: 123 раза

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Здесь главное - нужно оформить подписку на ТС ПИоТ для каждой кассы.
Судя по доступной информации, дальше он может и не работать по какой-то причине, но без его наличия
(и скорее всего без наличия действующей годовой подписки) будет невозможно работать с ПО ЛМ и продавать товар с КМ.

Кстати здесь прослеживается конфликт интересов.
ТС ПИоТ нужно покупать для каждой кассы (буква "Ж" - жадность !), а вот ПО ЛМ наоборот должно быть одно на весь магазин.
Как с этим справится наш герой ? Все на просмотр картины второй ... :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
zmi
Новичок
Сообщения: 24
Зарегистрирован: 26 Октябрь 2017, 21:51

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

Сообщение zmi »

Накропал у себя проверку по примеру "Работа с ТС ПИоТ (тестовый контур)":
последовательный вызов Honest::PIoT_ViewInfo, Loc:Honest.Init, Loc:Honest.PIoT_CheckCodes, Honest::CheckReceipt(gContact,qCodes,gVerified,False).
Clear(qCodes); qCodes.GS1 = Atol::RecodeMarking(QFS:DataMatrix); Add(qCodes) ! код со сканера по 1-му тесту Сертификации
Clear(qCodes); qCodes.GS1 = '0104602220006549215opFcmK<29>93dGVz'; Add(qCodes) ! 1-й код из примера
Clear(qCodes); qCodes.GS1 = '0104670540176099215''W9Um<29>93dGVz'; Add(qCodes) ! код 1-го теста Сертификации

Несмотря на gContact.bPIoT=True класс (процедура PIoT_CheckCodes) требует указать токен ЛМ ЧЗ ("Укажите токен для подключения к API ГСЦМ «Честный ЗНАК» !" и далее "...Если нет доступа к сервису - проверьте установку и настройки ТС ПИоТ.").

Если указать токен из ЛМ ЧЗ (который умрет 01.03.2026), получаю три сообщения:
ККТ, на которую зарегистрирован ТС ПИоТ|-------------------------------------------|ИНН ККТ: 9717169611|ЗН ККТ: 00106322849258|ЗН ФН: 9999078902016936|-------------------------------------------|Идентификатор ТС ПИоТ: 00106322849759|Проверка КМ в мсек.: 1800||Endpoint для ТС ПИоТ: https://tspiot.sandbox.crptech.ru
0|ok|ef483670-e670-4a0a-89da-3f66410d1b05|1770836727574
ВНИМАНИЕ ! ПЕЧАТЬ ЧЕКА ОТМЕНЕНА.|Устраните проблемы и повторите операцию.||Обнаружены ошибки разрешительной|проверки КМ в ON-LINE режиме ТС ПИоТ|для выписанных кодов маркировки ( 3 из 3 ):||0104670540176099215'W9Um93dGVz|КИ заблокирован ОГВ: Росалкогольтабакконтроль||0104602220006549215opFcmK93dGVz|КМ не найден в ГИС МТ||0104670540176099215'W9Um93dGVz|КМ не найден в ГИС МТ

Проблем, на мой взгляд две:
1. Я так понимаю, что онлайн проверка в ПИоТ у иеня не работает, поэтому переключается на ЛМ.
Из-за этого не находится и код из теста Сертификации.
Подскажите, чего еще надо проверить/настроить/докрутить, плиз.
PS. Попробовал прямо вызывать Loc:Honest.PIoT_CheckReceipt(qCodes,gVerified,False) - результат идентичен вызову Honest::CheckReceipt.
2. Странная диагностика в последнем сообщении: на первый код молочки выдается запрет Росалкогольтабакконтроль, он же на второй код должен выдаваться.
При этом, если не сразу три, а по одному коду тестировать, то отрабатывает корректно (молочка не найдена, алкоголь запрещен).

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

win.CheckPIoT Procedure() ! проверка КМ в ПИоТ ! zmi 10.02.2026+
 Code
  If ~Records(QFinStr); MMessage('Список пуст. Отсканируйте товары в список.','Предупреждение',ICON:Exclamation,'®©Ok©©~Ok.ico',1,'Arial Cyr',12,COLOR:Navy); Return.

  Honest::PIoT_ViewInfo(gContact)  ! Просмотр информации о ККТ, на которую зарегистрирован ТС ПИоТ 

  Free(qCodes) ! список КМ в GS1 для проверки
  Loop I:qCodes# = 1 To Records(QFinStr)
    Get(QFinStr,I:qCodes#); If ErrorCode(); Break.
    Clear(qCodes) ! Строка № X с КМ в чеке
    qCodes.GS1 = Atol::RecodeMarking(QFS:DataMatrix)
    Add(qCodes)
  End
  Clear(qCodes); qCodes.GS1 = '0104602220006549215opFcmK<29>93dGVz'; Add(qCodes)
  Clear(qCodes); qCodes.GS1 = '0104670540176099215''W9Um<29>93dGVz'; Add(qCodes)

  ! Информация о ПМСР (кассовом ПО)
  gContact.gPmsrInfo.name    = '1'     ! Наименование
  gContact.gPmsrInfo.version = '2'     ! Версия  
  gContact.gPmsrInfo.id      = '3'     ! Идентификатор в реестре ГИС МТ
  gContact.gPmsrInfo.token   = '4'     ! Контрольная сумма/ЭЦП исполняемого файла

  gContact.bPIoT = True                ! Не требовать наличие токена и проверка чека в TC ПИоТ
  Loc:Honest.Init(gContact)

!!  dSalePrice = 1700.00  ! Цена реализации товара по прайс-листу для контроля и переустановки по данным в КМ
  Loc:Honest.PIoT_NoPriceChanges = True ! Опционально: выписка без изменения цен по КМ (просто запрет продажи)
  bOffLine = GetINI('ПИоТ','OffLine',0,Get_Prop('FULL_PATH_INI')) ! Включить режим Off-Line (OffLine=1) для тестирования на стенде (для сценариев ПФС с 16 по 20)
  
  If Loc:Honest.PIoT_CheckCodes(qCodes,gResponse,qResponse) > 0  ! Проверка списка КМ в ТС ПИоТ
    Honest::Message(gResponse.codesResponse.codesResponse[1].code        & '|' & |
                    gResponse.codesResponse.codesResponse[1].description & '|' & |
                    gResponse.codesResponse.codesResponse[1].reqId       & '|' & |
                    gResponse.codesResponse.codesResponse[1].reqTimestamp) 
    If qResponse.LockFlag = 0 ! Запись результата проверки КМ в тег 1260 для элементов в чеке (по содержанию чека с КМ)
      Loop I:qCodes# = 1 To Records(QFinStr)  
        Get(QFinStr,I:qCodes#); If ErrorCode(); Break.
        Clear(qFinStr.gIndustryInfo)                ! 1260
        qFinStr.gIndustryInfo.fois   = '030'        ! 1262 Министерству промышленности и торговли Российской Федерации
        qFinStr.gIndustryInfo.date   = '2023.11.21' ! 1263 Постановление Правительства РФ №1944 от 21.11.2023
        qFinStr.gIndustryInfo.number = '1944'       ! 1264 №1944
                                                    ! 1265
        qFinStr.gIndustryInfo.industryAttribute = 'UUID='  & Clip(qCodes.reqId)        & | 
                                                  '&Time=' & Clip(qCodes.reqTimestamp) & |
                      Choose(qCodes.Inst    <> '','&Inst=' & Clip(qCodes.Inst),    '') & |
                      Choose(qCodes.Version <> '','&Ver='  & Clip(qCodes.Version), '')
        Put(qFinStr)  ! сохранение данных тэга 1260
      End
    End
  End
!;MMessage('проверка PIoT_CheckCodes - завершено!','Сообщение',ICON:Exclamation,'®©Ok©©~Ok.ico',1,'Arial Cyr',12,COLOR:Navy)

  If Honest::CheckReceipt(gContact,qCodes,gVerified,False)  ! Выполнить проверку КМ в GS1 из содержания чека и получить результат
     Honest::Message('Проверка выполнена ' & Choose(gVerified.bWorkVid,'On-Line','Off-Line') & ' в ТС ПИоТ')

     MMessage('Теперь может распечатываться чек','Сообщение',ICON:Exclamation,'®©Ok©©~Ok.ico',1,'Arial Cyr',12,COLOR:Navy) ! И собственно теперь печать Вашего чека с тегом 1260
     ! !!!!!!!!!!!!!!!!!!! ЗДЕСЬ: Разрешительная проверка КМ в ТС ПИоТ пройдена и теперь мона отправлять чек на ККТ ...
  End

!;MMessage('Конец проверки в ТС ПИоТ!','Сообщение',ICON:Exclamation,'®©Ok©©~Ok.ico',1,'Arial Cyr',12,COLOR:Navy) ! И собственно теперь печать Вашего чека с тегом 1260
 Return 
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 36 раз
Поблагодарили: 123 раза

Класс для API ГСЦМ «Честный ЗНАК» / ТС ПИоТ

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

Добрый день !

1. Да, абсолютно верно. Для работы ТС ПИоТ требуется ПО ЛМ "Честный ЗНАК".
И чем дальше - тем больше. Сейчас можете передать в токене любое значение.

2. Если Вы хотите что бы я проверил Ваш код и как-то прокомментировал - подготовьте
пожалуйста рабочий пример в элементарном проекте. Я Вам отправлял как это делается.
Я его соберу и всё увижу. Потому что вот это месиво текста мне не очень понятно ...
zmi писал(а): 15 Февраль 2026, 14:53 Я так понимаю, что онлайн проверка в ПИоТ у иеня не работает, поэтому переключается на ЛМ.
3. А Вы включите пожалуйста режим отладки:

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

  gContact.lDebugCodePage = CP_UTF8   ! Кодовая страница записи протокола (без записи = -1 / CP_UTF8 / CP_ACP) 
  Loc:Honest.Init(gContact)           ! Инициализировать класс
и Вы получите в папке Debug (создать самостоятельно) все запросы класса и ответы на них.
Будет полная информация, что Вы на самом деле отправляете сервису и что он по этому поводу думает ... :D
zmi писал(а): 15 Февраль 2026, 14:53 Если указать токен из ЛМ ЧЗ (который умрет 01.03.2026)
Если у Вас есть официальная информация об ограничении срока действия токена - поделитесь пожалуйста ссылкой.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Ответить