Класс для API ГСЦМ «Честный ЗНАК»
Модератор: Дед Пахом
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Класс для API ГСЦМ «Честный ЗНАК»
Привет всем !
Класс для разрешительной проверки КМ (кодов маркировки) через API ГСЦМ "Честный знак".
Поддержка целевой реализации в ПО ЛМ "Честный Знак" (обязательна с 01.09.2025 г.)
Полный боевой комплект с описанием интерфейса API и примерами.
Благодарность за помощь на старте проекта: FinsoftRZ и Alex412.
Любые замечания, исправления и дополнения - приветствуются !
----------------------------------------------------------------------------------------------------
Рекомендуем использовать актуальные версии классов LibCURL и cJSON.
Класс для разрешительной проверки КМ (кодов маркировки) через API ГСЦМ "Честный знак".
Поддержка целевой реализации в ПО ЛМ "Честный Знак" (обязательна с 01.09.2025 г.)
Полный боевой комплект с описанием интерфейса API и примерами.
Благодарность за помощь на старте проекта: FinsoftRZ и Alex412.
Любые замечания, исправления и дополнения - приветствуются !
----------------------------------------------------------------------------------------------------
Рекомендуем использовать актуальные версии классов LibCURL и cJSON.
- Вложения
-
- Honest-2025-09-27.rar
- Версия от 27.09.2025 г.
- (1.25 МБ) 1511 скачиваний
-
- Honest-2025-10-10.rar
- Версия от 10.10.2025 г.
- (1.26 МБ) 27 скачиваний
Последний раз редактировалось Игорь Столяров 30 Октябрь 2025, 7:39, всего редактировалось 39 раз.
За теми, кто отстал, не возвращаться !
Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Интерфейс для API НСЦМ "Честный знак"
Тут один товарищ написал, что он банит в случае отсутствия ответа адреса не на 15 минут, как по методички, а совсем. Но мне кажется, что оптимальнее изначально оставить 3 адреса.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Интерфейс для API НСЦМ "Честный знак"
Там много достаточно спорных идей ...
Понятно, что "Честный Знак" перестраховывается, ведь есть много удалённых населённых пунктов,
с плохим доступом в сеть и CDN площадки в регионах могут отваливаться непредсказуемо ...
Но я пока не заморачивался - список площадок создаётся при запуске программы и обновляется при смене даты.
(у нас тоже есть товарищи, которые неделями программу не закрывают). Кол-во площадок - настраивается.
Мне каца, что если не впадать в не зону доступа - то этого достаточно. А там посмотрим.
За теми, кто отстал, не возвращаться !
Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Интерфейс для API НСЦМ "Честный знак"
Сколько людей, столько и мнений.
У меня запрос списка адресов выполняется при первом сканировании и обновляется либо при перезапуске программы, либо через 6 часов, если программу не перезапускать. Я как бы больше чту методичку.
У меня запрос списка адресов выполняется при первом сканировании и обновляется либо при перезапуске программы, либо через 6 часов, если программу не перезапускать. Я как бы больше чту методичку.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Интерфейс для API НСЦМ "Честный знак"
Сейчас уже накопился некоторый опыт работы с CDN площадками, выпустили обновление класса от 18.10.2024 г.
За теми, кто отстал, не возвращаться !
Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Класс для API НСЦМ «Честный ЗНАК»
Всем привет !
Версия класса для API НСЦМ "Честный знак" от 15.12.2024 г.
----------------------------------------------------------------------
Внесены изменения в соответствии с МР НСЦМ «Честный ЗНАК» версии 08 от 15.11.2024 г.;
Реализована проверка продукции в режиме офлайн при розничной продаже;
+
Отработаны ситуации на переходный период с обязательной проверкой КМ с 01.03.2025 г.
Добавлена процедура для простой комбинированной проверки списка КМ перед печатью чека.
Устранены известные проблемы и обновлены примеры.
----------------------------------------------------------------------
Мы используем актуальные версии классов LibCurl и cJSON с сайта автора.
Версия класса для API НСЦМ "Честный знак" от 15.12.2024 г.
----------------------------------------------------------------------
Внесены изменения в соответствии с МР НСЦМ «Честный ЗНАК» версии 08 от 15.11.2024 г.;
Реализована проверка продукции в режиме офлайн при розничной продаже;
+
Отработаны ситуации на переходный период с обязательной проверкой КМ с 01.03.2025 г.
Добавлена процедура для простой комбинированной проверки списка КМ перед печатью чека.
Устранены известные проблемы и обновлены примеры.
----------------------------------------------------------------------
Мы используем актуальные версии классов LibCurl и cJSON с сайта автора.
За теми, кто отстал, не возвращаться !
Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Класс для API НСЦМ «Честный ЗНАК»
Для тех кто в теме:
https://www.gazeta.ru/social/news/2024/ ... 0392.shtml
Спойлер:
Вера в то, что придёт добрый барин и решит все наши проблемы жива и поныне ... 
https://www.gazeta.ru/social/news/2024/ ... 0392.shtml
Спойлер:
Код: Выделить всё
Бизнес-сообщество указывает на то, что программа имеет серьезные недостатки и
представляет сложность даже для специалистов в области информационных технологий.
Изначально задумывавшаяся как инициатива для борьбы с контрафактной продукцией,
государственная программа маркировки, по мнению представителей малого бизнеса,
превратилась в непрозрачную схему, обогащающую узкий круг лиц, пополняющих списки Forbes.
...
Кроме того, бизнес предлагает доработать систему «Честный знак».
За теми, кто отстал, не возвращаться !
Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Класс для API НСЦМ «Честный ЗНАК»
В следующем году ожидается закрытие предприятий из-за ввода ндс на упрощенке. Люди, которые еще недавно были на вмененке и не вели бухгалтерию, потом тяп лят с упрощенкой, теперь вообще не понимают, что делать.
C6/C12, ШВС, tps/btrieve.
Класс для API НСЦМ «Честный ЗНАК»
Добрый день! Игорь, Вы как то учитывали этот пункт в МР при реализации класса Honest?
Или как отработает Libcurl класс по умолчанию при последовательных запросах в чеке ?
Мне кажется, Libcurl по умолчанию делает запрос с keep-alive, и не закрывает соединение.
Т.е. для закрытия соединения нужны дополнительные телодвижения ?
Или как отработает Libcurl класс по умолчанию при последовательных запросах в чеке ?
Мне кажется, Libcurl по умолчанию делает запрос с keep-alive, и не закрывает соединение.
Т.е. для закрытия соединения нужны дополнительные телодвижения ?
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Класс для API НСЦМ «Честный ЗНАК»
Нужно учитывать, что сервис НСЦМ ЧЗ прошёл уже несколько изменений.harry писал(а): 20 Декабрь 2024, 14:15 Игорь, Вы как то учитывали этот пункт в МР при реализации класса Honest?
Что-то из пропущенных серий Вы ещё можете найти в документации.
1. Ранее был ассинхронный обмен - по которому передавлись КМ и лишь потом
по мере готовности их обработки - получали результат (как в АИС "Меркурий").
Сейчас выполняется пакетный запрос на который сразу возвращается ответ.
Удерживать соединение не нужно (даже если бы я знал как это делать в LibCurl)
2. Описание рассматривает "классическое" место кассира-продавца - оно удобно
для академичеких целей, но пожалуй уже нигде в реальности не используется.
Т.е. подошёл покупатель и кассир "открыл" чек и началась продажа ...
Считалось, что при добавлении каждого товара выполняется запрос на разрешительную проверку.
И при ошибке - товар не продаётся. Наверно в этом случае нужно удерживать подключение к сервису,
что бы не задалбывать его хотя бы установкой коннектов при сканировании каждого КМ в чеке.
Но сейчас иное. Проверка выполняется после закрытия чека, через пакетный запрос на все КМ в чеке.
Это видно по работе кассового софта (Пятёра, Магнит, Ашан, Лента, 1C-Торговля и т.д.)
Да иначе и не получится работать быстро и держать открытыми несколько чеков на выписку.
И в описании запросов на сервис сейчас есть только пакетная проверка КМ (не путать с ЛМ ЧЗ).
Если Вы обратили внимание, метод CheckOneCode() сделан исскуственно для внутренних целей.
За теми, кто отстал, не возвращаться !
Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Класс для API НСЦМ «Честный ЗНАК»
Игорь, что имеется ввиду под "проверка после закрытия чека"? Вообще, этот вопрос активно обсуждался на другом форуме. Марка проверяется 2 раза. Первый через запрос к ЧЗ через curl (разрешительный режим, проверка сроков годности), второй перед формированием и отправкой чека в ОФД через ОИСМ средствами ккм. Так вот, у меня как раз проверка через curl выполняется после сканирования каждой марки. Иначе, представьте ситуацию, отсканировали все марки без проверки, затем начинаем проверять, а какие-то марки не проходят. Придется их удалять из чека повторным сканированием, а покупатель все уже в мешок собрал. Время проверки марки в ЧЗ в теории не должно превышать 1.5 сек, что практически незаметно для покупателя. Это, конечно, только в теории, периодически в некоторых магазинах возникает зависон. Как в Пятере делают, хз. Это к тому, как выбрать меньшее из зол. В принципе, у меня в кассовой программе напротив каждого отсканированного товара есть в специальном столбике отметка невалидной марки. Это еще давно делалось для проверки через ОИСМ, но можно задействовать и при проверке в ЧЗ после окончания сканирования всего и перед вводом оплаты. Скорее всего, наиболее оптимальный подход вынести выбор варианта в настройку.
Curl, насколько я понял, не поддерживает keep-alive. Тоже активно обсуждалось. Вообще говоря, рекомендация странная, классический веб работает в режиме запросов, не удерживая постоянное соединение неопределенное время.
Curl, насколько я понял, не поддерживает keep-alive. Тоже активно обсуждалось. Вообще говоря, рекомендация странная, классический веб работает в режиме запросов, не удерживая постоянное соединение неопределенное время.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Класс для API НСЦМ «Честный ЗНАК»
Когда все товары в чеке выписаны и мы знаем все КМ для проверки.finsoftrz писал(а): 20 Декабрь 2024, 17:11 Игорь, что имеется ввиду под "проверка после закрытия чека"?
Абсолютно рабочая ситуация и рассмотрена в методических рекомендациях АТОЛ.finsoftrz писал(а): 20 Декабрь 2024, 17:11 Иначе, представьте ситуацию, отсканировали все марки без проверки
Точнее там предлагается 3 алгоритма проверки.
Да, с продажи снимается весь чек и это форсмажор, а не рабочая ситуация.
Смею предположить, что это было на заре становления контроля маркировки. Всё меняется.
В общем случае (с учётом дроблёных товаров) нельзя на 100% проверить КМ на клиентской стороне.
Сейчас можно уже не делать какие-то магические действия (столь любимые на другом форуме)
а просто задать дамп марки и включить тег "validateMarkingCodes" для проверки в ИСМ. И всё.
Наверно Вы уже знаете про ПО Локальный Модуль "Честный ЗНАК" ? Он решает этот вопрос.
А внимательный читатель видел в рекомендациях вот такой текст:
Т.е. дело повернуло в ту сторону, что ПО ЛМ по сути превратится в CDN площадку в каждом магазине.Дата обязательной проверки по «белым спискам» для товарных групп с экземплярной
прослеживаемостью (незаблокированные коды идентификации, которые находятся в статусе «в
обороте», и УОТ является их владельцем по данным ГИС МТ, ППРФ 1944 п.10б) будет определена
Правительством позже.
Последний раз редактировалось Игорь Столяров 20 Декабрь 2024, 18:24, всего редактировалось 1 раз.
За теми, кто отстал, не возвращаться !
Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Класс для API НСЦМ «Честный ЗНАК»
Да не, месяца 2 назад обсуждалось.
Ага, слышал про локальный модуль чз с суверенной базой данных Енисей. И что она решит когда-нибудь все проблемы, как утм в егаисе.
Ага, слышал про локальный модуль чз с суверенной базой данных Енисей. И что она решит когда-нибудь все проблемы, как утм в егаисе.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8268
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 34 раза
- Поблагодарили: 106 раз
Класс для API НСЦМ «Честный ЗНАК»
Скорее их создаст (сама того не желая).
Сейчас, если по какой-то причине CDN площадка недоступна - можно совершать продажу без заполнения тега 1260.
А вот с 01.03.2025 г. - уже низя (нарушение и штраф). Тег 1260 становится обязательным и должен быть заполнен
по данным ПО ЛМ "Честный ЗНАК" (тот что с суверенной БД "Енисей"). Кстати, нормально работает, ожидалось хуже.
За теми, кто отстал, не возвращаться !
Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Класс для API НСЦМ «Честный ЗНАК»
Почитал про Енисей. Как я понимаю, то, что называется базой данных, это куча отдельных файлов в формате json, типа один документ это один файл (ну и плюс там могут быть ссылки на бинарные файлы). Изменения, вносимые в документ, дописываются в конец файла, не затирая предыдущие версии. И они почему-то думают, что это полностью защищает от сбоев. Всякие индексы это тоже отдельные json файлы.
Когда-то лет 20 назад я общался с нашим местным сумасшедшим программистом. У него была похожая идея, только вместо json он использовал xml, а изменения документов оформлялись в виде отдельного xml файла. Как он говорил, старые файлы остаются в системе, и будут со временем отмирать как клетки головного мозга. MS пробовал такое сделать, у них не получилось, Oracle пробовал, у них не получилось, а у нас получилось. Система называлась Ода. Вначале он сам её писал (на сях вроде), потом стал студентов нанимать. Мож и до сих пор пилит, давно не следил.
Чёт мне кажется, намучаются люди с этим Енисеем. В том же Егаисе, где другая система, но что-то из той же серии, данные теряются постоянно. И что с этим делать, никто не знает. Некоторые активные регулярно мониторят, как могут, и долбят техподдержку егаиса, в которой специально обученные люди вручную правят потерянные данные, насколько у них хватает сил. А остальные просто забивают, и бывают сильно удивлены при закрытии или перерегистрация магазинов.
Когда-то лет 20 назад я общался с нашим местным сумасшедшим программистом. У него была похожая идея, только вместо json он использовал xml, а изменения документов оформлялись в виде отдельного xml файла. Как он говорил, старые файлы остаются в системе, и будут со временем отмирать как клетки головного мозга. MS пробовал такое сделать, у них не получилось, Oracle пробовал, у них не получилось, а у нас получилось. Система называлась Ода. Вначале он сам её писал (на сях вроде), потом стал студентов нанимать. Мож и до сих пор пилит, давно не следил.
Чёт мне кажется, намучаются люди с этим Енисеем. В том же Егаисе, где другая система, но что-то из той же серии, данные теряются постоянно. И что с этим делать, никто не знает. Некоторые активные регулярно мониторят, как могут, и долбят техподдержку егаиса, в которой специально обученные люди вручную правят потерянные данные, насколько у них хватает сил. А остальные просто забивают, и бывают сильно удивлены при закрытии или перерегистрация магазинов.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5565
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 18 раз
- Поблагодарили: 78 раз
Класс для API НСЦМ «Честный ЗНАК»
Кстати, енисейники очень сильно бочку катят на sql сервера, что это древний и давно устаревший подход, который создавался во времена мейнфреймов, и сейчас от них повсеместно отказываются. Я тоже не люблю sql, но не до такой же степени. 
C6/C12, ШВС, tps/btrieve.
