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

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

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

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

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

Привет всем !

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

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

2.jpg
Вложения
Honest-2025-11-05.rar
Версия от 05.11.2025 г.
(1.26 МБ) 14 скачиваний
Последний раз редактировалось Игорь Столяров 05 Ноябрь 2025, 20:00, всего редактировалось 40 раз.
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8280
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 34 раза
Поблагодарили: 107 раз

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

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

finsoftrz писал(а): 10 Ноябрь 2025, 15:40 А этой статье можно доверять?
Таки да ! TrueMark.ru - это ресурс ГСЦМ "Честный ЗНАК", только с той стороны, что работает с производителями и импортёрами.
Конкретно для ОСУ мы тег передаём аналогично (но Вас опасная реализация частного случая показана):

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

  If xMyXML.Opened('НомСредИдентТов')    ! Формируем код ОСУ (объёмно сортового учёта)
     xMyXML.Closed('НомУпак','02' & |
                             Format(КОД_GTIN,@n014) & |
                             '37' & |
                             Clip(Left(Choose(КОЛИЧЕСТВО % 1 = 0,КОЛИЧЕСТВО,Int(КОЛИЧЕСТВО) + 1))) )  ! Округление дроби вверх до 1
     xMyXML.EndTag('НомСредИдентТов')
  end
Это пример из Класс для API XML «На основе штатного CpXML»
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5579
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 18 раз
Поблагодарили: 79 раз

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

Сообщение finsoftrz »

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

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

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

finsoftrz писал(а): 10 Ноябрь 2025, 17:51 В чем опасность?
Ну у Вас как бы предполагается, что Len(Tov:Shtrih) всегда 13 и GTIN всегда начинается с "0". Не факт. Например сигареты.
finsoftrz писал(а): 10 Ноябрь 2025, 17:51 Не встречал, чтобы количество маркированных товаров было дробным
И я не встречал. Но пользователь может указать или после какой-нибудь частичной отгрузки образуется остаточек. :D
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5579
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 18 раз
Поблагодарили: 79 раз

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

Сообщение finsoftrz »

У нас gtin это всегда еан13, дополненный нулем спереди до 14 знаков. С другими вариантами не сталкивался. Столкнемся, будем думать. Видел где-то, что для товара gtin указывался отдельно от шк. Это будет довольно неудобно для работы, так как тогда у товара может быть как несколько шк, так и несколько gtin.
Количество у нас контролируется в зависимости от типа товара (штучный или весовой/мерный). У штучного товара не может быть никаких дробных остаточков. Вот отгружать могут в литрах, когда цена задается на литр. В этом случае рядом с количеством в литрах в накладной можно поставить дополнительно количество целых бутылок или упаковок. А если не поставили, то считается как 1.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8280
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 34 раза
Поблагодарили: 107 раз

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

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

finsoftrz писал(а): 10 Ноябрь 2025, 18:36 Видел где-то, что для товара gtin указывался отдельно от шк.
Правильно говоря - это вообще разные коды. Тут можно кратко вспомнить историю.

Когда вводили GTIN то наши деятели успели даже открыть совместно российско-немчиновое предприятие
для выдачи логистических GTIN "всем тёмным росиянам". Кажется хотели недорого. По 3000 рубликов за код.
Но поднялась волна народного гнева, которая дошла до Думы. Тогда Минторге отложили мечту о домике в Израиле
и сказали что пошутили. GTIN - это тот же штрих-код. 0 + EAN13 для штучного товара и EAN14 для фасованного.

Это я к чему рассказал ? Например, на коробку с мороженным наносится упаковочный КМ длиной 60 символов,
который содержит 14-значный GTIN и первая цифря в нём совсем не 0 ... 🤷‍♀️
За теми, кто отстал, не возвращаться ! 🏴‍☠️ Кодекс
Ответить