Класс для API НСЦМ «Честный ЗНАК»

Программы на Clarion, шаблоны, библиотеки и пр.

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7948
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 92 раза

Класс для API НСЦМ «Честный ЗНАК»

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

Привет всем !

Класс для разрешительной проверки КМ (кодов маркировки) через API НСЦМ "Честный знак".
Поддержка целевой реализации в ПО ЛМ "Честный Знак" (обязательна с 01.09.2025 г.)
Полный боевой комплект с описанием интерфейса API и примерами.

Благодарность за помощь на старте проекта: FinsoftRZ и Alex412.
Любые замечания, исправления и дополнения - приветствуются !
------------------------------------------------------------------------------------------------------------
Ставь лайк, если уже понял, что ПО ЛМ ЧЗ нельзя обновить, а можно только переустановить ! 👍

1.jpg
Вложения
Honest-2025-04-25.zip
Версия от 25.04.2025 г.
(1.16 МБ) 132 скачивания
Последний раз редактировалось Игорь Столяров 25 Апрель 2025, 10:18, всего редактировалось 24 раза.
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Интерфейс для API НСЦМ "Честный знак"

Сообщение finsoftrz »

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

Интерфейс для API НСЦМ "Честный знак"

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

finsoftrz писал(а): 12 Сентябрь 2024, 13:22 как по методички
Там много достаточно спорных идей ...
Понятно, что "Честный Знак" перестраховывается, ведь есть много удалённых населённых пунктов,
с плохим доступом в сеть и CDN площадки в регионах могут отваливаться непредсказуемо ...

Но я пока не заморачивался - список площадок создаётся при запуске программы и обновляется при смене даты.
(у нас тоже есть товарищи, которые неделями программу не закрывают). Кол-во площадок - настраивается.

Мне каца, что если не впадать в не зону доступа - то этого достаточно. А там посмотрим. ;)
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Интерфейс для API НСЦМ "Честный знак"

Сообщение finsoftrz »

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

Интерфейс для API НСЦМ "Честный знак"

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

finsoftrz писал(а): 03 Сентябрь 2024, 16:41 Ну что, Игорь, испили прелести работы с ЧЗ?
Сейчас уже накопился некоторый опыт работы с CDN площадками, выпустили обновление класса от 18.10.2024 г. :)
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7948
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 92 раза

Класс для API НСЦМ «Честный ЗНАК»

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

Всем привет !

Версия класса для API НСЦМ "Честный знак" от 15.12.2024 г.
----------------------------------------------------------------------
Внесены изменения в соответствии с МР НСЦМ «Честный ЗНАК» версии 08 от 15.11.2024 г.;
Реализована проверка продукции в режиме офлайн при розничной продаже;
+
Отработаны ситуации на переходный период с обязательной проверкой КМ с 01.03.2025 г.
Добавлена процедура для простой комбинированной проверки списка КМ перед печатью чека.
Устранены известные проблемы и обновлены примеры.
----------------------------------------------------------------------
Мы используем актуальные версии классов LibCurl и cJSON с сайта автора.
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7948
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 92 раза

Класс для API НСЦМ «Честный ЗНАК»

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

Для тех кто в теме:
https://www.gazeta.ru/social/news/2024/ ... 0392.shtml

Спойлер:

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

Бизнес-сообщество указывает на то, что программа имеет серьезные недостатки и 
представляет сложность даже для специалистов в области информационных технологий.

Изначально задумывавшаяся как инициатива для борьбы с контрафактной продукцией, 
государственная программа маркировки, по мнению представителей малого бизнеса,
превратилась в непрозрачную схему, обогащающую узкий круг лиц, пополняющих списки Forbes.
...
Кроме того, бизнес предлагает доработать систему «Честный знак».
Полный оригинальный текст челобитной
Полный оригинальный текст челобитной
Вера в то, что придёт добрый барин и решит все наши проблемы жива и поныне ... :idied:
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Класс для API НСЦМ «Честный ЗНАК»

Сообщение finsoftrz »

В следующем году ожидается закрытие предприятий из-за ввода ндс на упрощенке. Люди, которые еще недавно были на вмененке и не вели бухгалтерию, потом тяп лят с упрощенкой, теперь вообще не понимают, что делать.
C6/C12, ШВС, tps/btrieve.
harry
Бывалый
Сообщения: 70
Зарегистрирован: 24 Февраль 2015, 14:16
Поблагодарили: 3 раза

Класс для API НСЦМ «Честный ЗНАК»

Сообщение harry »

Добрый день! Игорь, Вы как то учитывали этот пункт в МР при реализации класса Honest?
Снимок.JPG
Или как отработает Libcurl класс по умолчанию при последовательных запросах в чеке ?
Мне кажется, Libcurl по умолчанию делает запрос с keep-alive, и не закрывает соединение.
Т.е. для закрытия соединения нужны дополнительные телодвижения ?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7948
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 92 раза

Класс для API НСЦМ «Честный ЗНАК»

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

harry писал(а): 20 Декабрь 2024, 14:15 Игорь, Вы как то учитывали этот пункт в МР при реализации класса Honest?
Нужно учитывать, что сервис НСЦМ ЧЗ прошёл уже несколько изменений.
Что-то из пропущенных серий Вы ещё можете найти в документации. ;)

1. Ранее был ассинхронный обмен - по которому передавлись КМ и лишь потом
по мере готовности их обработки - получали результат (как в АИС "Меркурий").

Сейчас выполняется пакетный запрос на который сразу возвращается ответ.
Удерживать соединение не нужно (даже если бы я знал как это делать в LibCurl)

2. Описание рассматривает "классическое" место кассира-продавца - оно удобно
для академичеких целей, но пожалуй уже нигде в реальности не используется.

Т.е. подошёл покупатель и кассир "открыл" чек и началась продажа ...
Считалось, что при добавлении каждого товара выполняется запрос на разрешительную проверку.
И при ошибке - товар не продаётся. Наверно в этом случае нужно удерживать подключение к сервису,
что бы не задалбывать его хотя бы установкой коннектов при сканировании каждого КМ в чеке.

Но сейчас иное. Проверка выполняется после закрытия чека, через пакетный запрос на все КМ в чеке.
Это видно по работе кассового софта (Пятёра, Магнит, Ашан, Лента, 1C-Торговля и т.д.)
Да иначе и не получится работать быстро и держать открытыми несколько чеков на выписку.

И в описании запросов на сервис сейчас есть только пакетная проверка КМ (не путать с ЛМ ЧЗ).
Если Вы обратили внимание, метод CheckOneCode() сделан исскуственно для внутренних целей.
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Класс для API НСЦМ «Честный ЗНАК»

Сообщение finsoftrz »

Игорь, что имеется ввиду под "проверка после закрытия чека"? Вообще, этот вопрос активно обсуждался на другом форуме. Марка проверяется 2 раза. Первый через запрос к ЧЗ через curl (разрешительный режим, проверка сроков годности), второй перед формированием и отправкой чека в ОФД через ОИСМ средствами ккм. Так вот, у меня как раз проверка через curl выполняется после сканирования каждой марки. Иначе, представьте ситуацию, отсканировали все марки без проверки, затем начинаем проверять, а какие-то марки не проходят. Придется их удалять из чека повторным сканированием, а покупатель все уже в мешок собрал. Время проверки марки в ЧЗ в теории не должно превышать 1.5 сек, что практически незаметно для покупателя. Это, конечно, только в теории, периодически в некоторых магазинах возникает зависон. Как в Пятере делают, хз. Это к тому, как выбрать меньшее из зол. В принципе, у меня в кассовой программе напротив каждого отсканированного товара есть в специальном столбике отметка невалидной марки. Это еще давно делалось для проверки через ОИСМ, но можно задействовать и при проверке в ЧЗ после окончания сканирования всего и перед вводом оплаты. Скорее всего, наиболее оптимальный подход вынести выбор варианта в настройку.

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

Класс для API НСЦМ «Честный ЗНАК»

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

finsoftrz писал(а): 20 Декабрь 2024, 17:11 Игорь, что имеется ввиду под "проверка после закрытия чека"?
Когда все товары в чеке выписаны и мы знаем все КМ для проверки.
finsoftrz писал(а): 20 Декабрь 2024, 17:11 Иначе, представьте ситуацию, отсканировали все марки без проверки
Абсолютно рабочая ситуация и рассмотрена в методических рекомендациях АТОЛ.
Точнее там предлагается 3 алгоритма проверки.

Да, с продажи снимается весь чек и это форсмажор, а не рабочая ситуация.
finsoftrz писал(а): 20 Декабрь 2024, 17:11 этот вопрос активно обсуждался на другом форуме
Смею предположить, что это было на заре становления контроля маркировки. Всё меняется.
В общем случае (с учётом дроблёных товаров) нельзя на 100% проверить КМ на клиентской стороне.
Сейчас можно уже не делать какие-то магические действия (столь любимые на другом форуме)
а просто задать дамп марки и включить тег "validateMarkingCodes" для проверки в ИСМ. И всё.
finsoftrz писал(а): 20 Декабрь 2024, 17:11 периодически в некоторых магазинах возникает зависон
Наверно Вы уже знаете про ПО Локальный Модуль "Честный ЗНАК" ? Он решает этот вопрос.
А внимательный читатель видел в рекомендациях вот такой текст:
Дата обязательной проверки по «белым спискам» для товарных групп с экземплярной
прослеживаемостью (незаблокированные коды идентификации, которые находятся в статусе «в
обороте», и УОТ является их владельцем по данным ГИС МТ, ППРФ 1944 п.10б) будет определена
Правительством позже.
Т.е. дело повернуло в ту сторону, что ПО ЛМ по сути превратится в CDN площадку в каждом магазине. :)
Последний раз редактировалось Игорь Столяров 20 Декабрь 2024, 18:24, всего редактировалось 1 раз.
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Класс для API НСЦМ «Честный ЗНАК»

Сообщение finsoftrz »

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

Класс для API НСЦМ «Честный ЗНАК»

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

finsoftrz писал(а): 20 Декабрь 2024, 18:23 И что она решит когда-нибудь все проблемы
Скорее их создаст (сама того не желая).
Сейчас, если по какой-то причине CDN площадка недоступна - можно совершать продажу без заполнения тега 1260.
А вот с 01.03.2025 г. - уже низя (нарушение и штраф). Тег 1260 становится обязательным и должен быть заполнен
по данным ПО ЛМ "Честный ЗНАК" (тот что с суверенной БД "Енисей"). Кстати, нормально работает, ожидалось хуже. ;)
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Класс для API НСЦМ «Честный ЗНАК»

Сообщение finsoftrz »

Почитал про Енисей. Как я понимаю, то, что называется базой данных, это куча отдельных файлов в формате json, типа один документ это один файл (ну и плюс там могут быть ссылки на бинарные файлы). Изменения, вносимые в документ, дописываются в конец файла, не затирая предыдущие версии. И они почему-то думают, что это полностью защищает от сбоев. Всякие индексы это тоже отдельные json файлы.

Когда-то лет 20 назад я общался с нашим местным сумасшедшим программистом. У него была похожая идея, только вместо json он использовал xml, а изменения документов оформлялись в виде отдельного xml файла. Как он говорил, старые файлы остаются в системе, и будут со временем отмирать как клетки головного мозга. MS пробовал такое сделать, у них не получилось, Oracle пробовал, у них не получилось, а у нас получилось. Система называлась Ода. Вначале он сам её писал (на сях вроде), потом стал студентов нанимать. Мож и до сих пор пилит, давно не следил.

Чёт мне кажется, намучаются люди с этим Енисеем. В том же Егаисе, где другая система, но что-то из той же серии, данные теряются постоянно. И что с этим делать, никто не знает. Некоторые активные регулярно мониторят, как могут, и долбят техподдержку егаиса, в которой специально обученные люди вручную правят потерянные данные, насколько у них хватает сил. А остальные просто забивают, и бывают сильно удивлены при закрытии или перерегистрация магазинов.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5164
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 11 раз
Поблагодарили: 60 раз

Класс для API НСЦМ «Честный ЗНАК»

Сообщение finsoftrz »

Кстати, енисейники очень сильно бочку катят на sql сервера, что это древний и давно устаревший подход, который создавался во времена мейнфреймов, и сейчас от них повсеместно отказываются. Я тоже не люблю sql, но не до такой же степени. :D
C6/C12, ШВС, tps/btrieve.
Ответить