|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Всем привет! Имеется модуль для работы с драйвером ККТ Штрих-М на Дельфи. Все нормально работает, пробиваются чеки, закрывается смена и т.д. Теперь возникла надобность передавать маркировку при пробитии табачных изделий. Может кто внятно подсказать как это сделать? Какие методы использовать? В мануале к драйверу написано совершенно непонятно, либо не для тех, кто в танке. Использовать FnAcceptMarkingCode или FNBindMarkingItem, либо вообще FNSendItemCodeData... Кто сталкивался? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 10:47 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
aidynchik, хз как с табаком, но с лекарствами маркировку делаю так Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:06 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
арт2010, целиком будет вот так, правильно я понимаю? а что такое Ch, что он из себя представляет? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:21 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
aidynchik, да, так. Ch - просто моя структура данных, Ch.SGTIN - это просто строка, где записан SGTIN лекарства, у вас тут будет свой код табачной продукции ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:28 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
арт2010, Получается не нужно его как-то там раскладывать, разбивать. Просто отсканировал через 2D-сканер и отправил на драйвер? Ну кроме как вырезать символы по 14ый и с 14го ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:31 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
aidynchik, как раз таки надо! Сканируем DataMatrix и парсим его. Я передаю на драйвер уже результат парсинга. Я не знаю специфики табачки, говорю только за лекарства. В лекарствах 2 первые символа DataMatrix - служебные, потом 14 символов - GTIN, потом еще 2 символа пропускаем, потом 13 символов - Serial number. Потом идет криптохвост. То есть для лекарств Код: pascal 1. 2. 3. 4.
Как для табачки, я хз. Читайте спецификацию, на сайте ЧЗ наверняка все есть. Еще возможно у вас MarkingType другой ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:44 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
арт2010, огромное спасибо, очень помогли... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 07:15 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Если нашел решение, можешь здесь выложить. Вдруг кому-то ещё пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 14:44 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
арт2010 В лекарствах 2 первые символа DataMatrix - служебные, потом 14 символов - GTIN, потом еще 2 символа пропускаем, потом 13 символов - Serial number. Потом идет криптохвост. То есть для лекарств Не совсем так. Надо говорить о группах: группа 01 - это GTIN, 14 символов. То есть при парсинге марки находим группу 01, дальше 14 цифр будут GTIN. Еще есть группа 21, это серийный номер, 13 символов. GTIN+SERIAL_NUMBER - есть SGTIN у нас. Далее могут присутствовать группы 17 - срок годности, 6 символов. И может присутствовать группа 10 - серийный номер. Не тот, который серийный номер из SGTIN, а тот, который мы привыкли видеть всех упаковках лекарств. Они называют его BATCH. Он произвольной длины, поэтому должен завершаться кодом GS (#29). Есть еще группы 91, 92, 24, и еще что-то. В самом общем случае группы могут стоять где угодно, хотя я не видел, чтобы 01 не был первым. А вот группа 21 встречается в разных местах, поэтому надо парсить целиком. Однако, на сайте ЧЗ есть документ, где утверждается, что впредь должны быть только группы 01 и 21, и только в этом порядке, дальше криптохвост, и тогда Ваш алгоритм верный. Однако на практике это не так пока. Причем GTIN - Это не всегда EAN13 с упаковки плюс ведущий первый символ (0 или 1 на практике). GTIN может быть совсем другим, поэтому фарм.поставщики начали передавать эти GTIN в параллель с EAN13. Это я сейчас о лекарствах. У табачки всё просто: первые 14 символов марки - это типа GTIN, далее 7 символов - уникальный код, типа SERIAL_NUMBER. Символы 2-14, вроде как, всегда везде совпадали с EAN13 на упаковке. Насчет как засунуть в драйвер Штрих-М именно табачку - сам не совал, у меня у табачных клиентов атолы стоят, там раньше были 8 драйверы, сейчас 10-е. Там иначе загоняю, но про лекарства в штрихе могу сказать, что один из способов у меня точно так же реализован, а именно: MarkingType := $444D, потом заполнение GTIN и SerialNumber и выполнение FNSendItemCodeData; Отличие от лекарств только в длине SerialNumber: 7 в табачке и 13 в лекарствах, наверное, должно работать. Правда я этот способ и в лекарствах только тестировал, а на практике пользуюсь другим, когда GTIN переводим в бинарный формат, серийный номер - в HEX-формат, слепляем их, впереди суем строку '444D', потом два варианта: Либо полученную HEX-строку дополняем еще префиксом '8A041500' и передаем в Driver.TLVDataHex и выполняем FNSendTLVOperation. Либо разделяем Hex-символы этой строки пробелами и делаем TagNumber := 1162; TagType := 9; TagValueBinHex := НАША_HEX_СТРОКА; FNSendTagOperation; Вот это рабочий вариант. Скорее всего, и с табачкой всё получится. Именно так я сделал по аналогии с АТОЛ-м, где в 8 версии можно было только закодировать строку для тэга 1162 ,а в 10 они сделали один супер-бупер просто метод, потом объявили устаревшим, и он дает неверный префикс, хоть и работает, а новый супер-бупер метод работает, туда тупо марку суешь, само парсится, но чтобы он работал у тебя на кассе, ты подпишись к ним на абон.плату плиз. Я воспользовался методом, который работал и в ATOL8, проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:36 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
V.Borzov, о, а можно чуть-чуть поподробнее с Атол 8, пожалуйста? Потому что я уже начал переписывать на ДТО 10, но если можно обойтись малой кровью, не переходя на 10-ку. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 08:07 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
aidynchik V.Borzov, о, а можно чуть-чуть поподробнее с Атол 8, пожалуйста? Потому что я уже начал переписывать на ДТО 10, но если можно обойтись малой кровью, не переходя на 10-ку. Подскажи, где посмотреть пример работы с последними драйверами штрих-м из дельфи? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 11:50 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
aidynchik V.Borzov, о, а можно чуть-чуть поподробнее с Атол 8, пожалуйста? Потому что я уже начал переписывать на ДТО 10, но если можно обойтись малой кровью, не переходя на 10-ку. Так же хекс-строка с пробелами надо только задать сперва StreamFormat Код: pascal 1. 2. 3. 4.
Ну и надо это сделать ДО EndItem Но 10-ку пили, ибо атоловские кассы будут переводиться на 5-ую платформу, а с ней 8-ка не умеет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 11:58 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Собираем HEX-строку для табачки: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
В АТОЛ8 было так: Код: pascal 1. 2. 3. 4.
У меня сейчас появились сомнения насчет актуальности префикса 0005. Возможно, сейчас уже 444D должно быть, но клиент пока не жаловался... В 10-ке используем просто: Код: pascal 1.
Для лекарств это тоже применимо, но префикс точно 444D, и SERIAL будет длиной 13 символов, и как разбирать код марки: иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2020, 12:01 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
antox, вот именно, что их нет... в комплекте с драйвером старинные примеры, которые не обновлялись. Только в интернете по форумам искать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 07:25 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Cobalt747, да, конечно 10ку пилить буду, просто сейчас вопрос стоит срочняком ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 07:25 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
V.Borzov, большое спасибо! Очень выручили ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 07:25 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
antox, по штрихам вот я у себя насохранял ссылок разных, пока допиливал под маркировки: https://infostart.ru/1c/articles/1192569/ https://docs.google.com/document/d/1m3gHyKvM0gBMPgpzG-1cFsfVDnecouCtzQBJVDooGuM/edit#heading=h.z4tw3du13anc https://forum.shtrih-m-partners.ru/index.php?topic=33714.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 12:16 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
У атола с этим получше, всё-таки ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 13:35 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Коллеги, подскажите - имеет ли значение очередность передачи тегов (лекарства)? К примеру я передаю 1261 непосредственно перед 2107, но эта скотина не передается, при этом 2107 передается. 1260 тоже не передается, но сначала хочу хотя бы с 1261 разобраться. Передаю также как и до 1.2 передавал составные теги. Единственная мысль сейчас - возможно имеет значение очередность и 1261 нужно передавать в строго определенном месте - после определенного тега и до определенного тега? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 12:30 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
арт2010, ничего, что 1261 - это атрибут чека а не позиции? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 13:44 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Cobalt747, Дак и передаю как атрибут чека, по крайней мере аналогично 2107, который передается. Что не так делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 14:33 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Вроде разобрался, подскажите сейчас все нужные теги есть? И что все таки по их последовательности? Имеет ли она значение? К примеру 1261 вроде как должен быть после 1059 - но насколько это критично? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 00:25 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
арт2010, Не припоминаю в ФФД требований к порядку следования тегов, только к их наличию. Хотя мог и пропустить что... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 01:21 |
|
Передача маркировки товара в драйвер ККМ Штрих-М
|
|||
---|---|---|---|
#18+
Блин опять шляпа - вроде с тегами более менее разобрался, но вылезла другая трабла - при тестировании КМ сохранял в notepad ++, все было ок. А в самой проге символы GS не считываются в Memo. Как побороть? Или искуственно вставлять, высчитав номер позиции в строке, он ведь постоянный? Delphi 2007 если что. Может в настройках сканера дело? Хотя в notepad ++ ведь правильно считывается ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2022, 13:29 |
|
|
start [/forum/topic.php?fid=58&msg=40002031&tid=2036637]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 376ms |
0 / 0 |