Пример печати DataMatrix (маркировка обуви)



Обработка показывает пример вывода на печать кодов маркировки (КМ) для обувной продукции полученных от ЦРПТ в формате DataMatrix

Простая обработка, в которой реализован пример вывода на печать кодов маркировки (КМ) для обувной продукции полученных от ЦРПТ в формате DataMatrix. Тестировалась на конфигурациях Розница, редакция 2.2.13.8 и Управление торговлей, редакция 11.4.

Для формирования штрихкодов используется компонента, которая загружена в макет ОбщийМакет.КомпонентаПечатиШтрихкодов. Вызов осуществляется из стандартной функции МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода).

Значение ТипКода в параметрах штрихкода передаваемых в функцию должен быть равен 18, что соответствует формату DataMatrix.

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

В обработке показан также пример разбора кода маркировки на GTIN, серийный номер и ТН ВЭД. Обработка в первую очередь адаптирована под код маркировки для обувной продукции.

Для проверки вывода штрихкода необходимо на вкладке "Настройки" заменить примеры кодов маркировки (КМ) на свои.

При желании, для проверки, можно считать полученный штрихкод через бесплатное приложение «Честный ЗНАК», доступное для скачивания в AppStore и Google Play. Если полученный в результате эмиссии код маркировки указан верно, то в приложении высветится описание товара, производитель и т.д.

Если при работе выходит сообщение "Ошибка компоненты", значит в конфигурации ОбщийМакет.КомпонентаПечатиШтрихкодов содержит старую версию компоненты. Обновить её можно либо обновлением конфигурации, либо отдельно. 

71 Comments

  1. Harmful

    Добрый день.

    Вопрос про разделительный символ он на разных сканерах разный почему «u001D»? Сам штрихкод получили сканировав пдф от СУЗ или есть другой способ получить полный штрихкод? Не смог получить 1 к 1 штрихкод как на пдф от црпт.

    Reply ↓
  2. OkeanObuvi

    Доброе утро, ошибка «Ошибка внешней компоненты» как ее отдельно обновить Розница 2.2.7.39

    Reply ↓
  3. kare

    Добрый день, я правильно понимаю что данной обработкой можно массово напечатать этикетки для обуви?

    Reply ↓
  4. kare

    Все работает. Обновить компоненту можно взяв из любой типовой конфы.

    Reply ↓
  5. timurhv

    Чекмарк не проходит, нет FNC1

    Reply ↓
  6. kare

    (5)где не проходит?

    Reply ↓
  7. timurhv

    (6) Приложил как должно быть и как сейчас. Тип кода надо поменять на 24.

    Reply ↓
  8. dron-s

    Добрый день

    подскажите, а как от ЦРПТ получить коды маркировки на товар который сейчас в магазине и не маркирован?

    Reply ↓
  9. Dedushka

    (8) Вопрос очень интересный. На октябрьской патнерской сессии Rieker, я на этот вопрос ответа к сожалению не получил.

    Reply ↓
  10. kare

    (7)а что за приложение такое ? Опять же программа честный знак распознает корректно… Надо тип кода поменять на 24 или еще приклеить FNC1 в начало?

    Reply ↓
  11. kare

    (8)в чем конкретно вопрос? сейчас участники оборота получают марки для остатков и потом вводят их в оборот.

    Reply ↓
  12. kare

    (7)

    Тип кода надо поменять на 24.

    ошибка внешней компоненты тогда получается? как Вы решили вопрос?

    Reply ↓
  13. timurhv

    (10) Во вложении DataMatrix по-вашему? Приложение тоже его распознает. Проблемы начнутся в оборудовании, если продаете дальше ЮЛ.

    Reply ↓
  14. kare

    (13)т.е получаемый DataMatrix потом нельзя будет отсканировать при розничной продаже через кассу? как Вы решили эту проблему?

    Reply ↓
  15. opus70

    получил штрихкоды из личного кабинета в формате csv

    но в структуре нет разделителей поприсутствуют если получаешь

    эти же штрихкоды но в формате pdf

    как получить правильные коды для печати у этих жуликов из честного честного

    Reply ↓
  16. kare

    (13)Тимур?

    Reply ↓
  17. kare

    (15)решили вопрос?

    Reply ↓
  18. timurhv

    (16) В обработке DataMatrix:

    ПараметрыШтрихкода.Вставить(«ТипКода», 18);

    В типовых 1С используется DataMatrix GS1:

    ПараметрыШтрихкода.Вставить(«ТипКода», 24);

    Reply ↓
  19. timurhv

    (15) откройте файл csv в Excel, сохраните как книгу xlsx.

    Потом откройте файл в 1С и увидите разделитель как «_x001D_». Этот разделитель можете вставить в данную обработку и получите DataMatrix.

    Reply ↓
  20. opus70

    Разделитель =»x1d»;

    если найти(ЗначениеКода,Разделитель)=0 ТОгда

    _32=лев(ЗначениеКода,32);

    _пром =прав(ЗначениеКода,стрдлина(ЗначениеКода)-32);

    _6 = лев(_пром,6);

    _Хвост =лев(_пром,стрдлина(_пром)-6);

    ЗначениеКода = _32+Разделитель+_6+Разделитель+_Хвост;

    конецесли;

    //дальше можно печатать и так далее

    Reply ↓
  21. kare

    (19)Спасибо за разъяснения, он у всех обувщиков одинаковый?

    Reply ↓
  22. opus70

    правда это тоже частичное решение проблемы так как самый честный изменил правила игры а самая лучшая как всегда не знает об этом

    смысл проблемы в том что GTIN на остатки получить щас в разрезе своих артикулов нельзя (можно только в тех разрезах что дают 6*2 т.е. всего 12GTIN на все остатки ) и придется еще в 1с отключить проверку GTIN-EAN

    по поводу ограничения GTIN я точно не разобрался так как делал это не через API

    Reply ↓
  23. kare

    (22) а почему у Вас Разделитель =»x1d» а не Разделитель =»x001d» ?

    Reply ↓
  24. kare

    (18)а у вас случайно нет этой компоненты где 24 используется?

    Reply ↓
  25. opus70

    Кода отдает ЦРП отдает этикетку в PDF там именно этот разделитель

    и 1С тоже ищет именно этот разделитель (Розница 2.12.хх)

    Определено опытным путем

    Reply ↓
  26. kare

    (25)спасибо Вам за консультацию!по идее если доработать обработку Вашим кодом в (20) то можно печатать?

    Reply ↓
  27. opus70

    да совершено верно я так и сделал и еще

    ПодключаемоеОборудованиеРТВызовСервера.ДанныеПоискаПоШтрихкоду

    вот тут править потом на отключение GTIN-EAN

    по крайней мере у меня все заработало и печатает так как мне надо

    и проходить проверку на честном занке

    больше всего обидело изменение правил по привязке GTIN-EAN

    Reply ↓
  28. opus70

    самая огромная засада ждет от 1с

    которая считает что в Коде маркировке сидит GTIN-EAN и после считывания кода маркировки лезет в базу своих штрихкодов и пытается найти этот GTIN-EAN а ЦРП выдает их всего 12 штук когда их нужно пару тысяч на организацию

    Reply ↓
  29. kare

    (28) спасибо большое за разъяснения !

    Reply ↓
  30. opus70

    (29) да не за что, тут и автору спасибо он тоже в своем примере отлично все сделал разобрался

    а я уже под себя мучил дальше

    Reply ↓
  31. LegO

    (27)

    GTIN-EAN

    а у вас какая конфигурация?

    Reply ↓
  32. opus70

    (31) Розница но думаю и в УТ 11 тоже так же сделано

    Reply ↓
  33. tara84

    Добрый день! а кто нить сталкивался с проблемой — если в марке присутствует скобка то при генерации пишет invalid barcode????

    Reply ↓
  34. opus70

    (33) еще раз открой файл *.csv openOffice скопируй в буфер вставь такое бывает не понимаю почему

    но повторно все вставляется корректно

    Reply ↓
  35. tara84

    (34) вставляется все корректно, проблема генерации — заметил что если есть скобка «(» или «)» тогда вместо картинки выдает «invalid barcode»

    Reply ↓
  36. kare

    (35)у меня такого не было и со скобками есть марки все ок

    Reply ↓
  37. opus70

    не знаю там обычно пишет ошибка в 31 символе а на скобки никогда не было проблем

    Reply ↓
  38. tara84

    а печатаете простой data matrix или GS1? с простым проблем нет…

    Reply ↓
  39. o_fedorinova

    (38) У меня не печатает левую скобку. Правую скобку печатает нормально. GS1DATAMATRIX.

    А у Вас?

    Reply ↓
  40. tara84

    (39) обе, сегодня на другом пк хочу попробовать…

    Reply ↓
  41. o_fedorinova

    Я думаю, что виновата 1С-вская «КомпонентаПечатиШтрихкодов», версия «9.0.6.1025».

    Reply ↓
  42. AlexeyK1

    (20)

    мне кажется ошибочка

    _Хвост =лев(_пром,стрдлина(_пром)-6); // исправить на прав(
    
    _Хвост =прав(_пром,стрдлина(_пром)-6);// так верно
    

    и вообще для универсальности

    я так сделал

    _ДатаМатрикс = ДатаМатрикс ;
    Разделитель =Символ(29);
    _ДатаМатрикс = СтрЗаменить(_ДатаМатрикс, «u001D», Разделитель);
    _ДатаМатрикс = СтрЗаменить(_ДатаМатрикс, «u001d», Разделитель);
    если найти(_ДатаМатрикс,Разделитель)=0 ТОгда
    _31=лев(_ДатаМатрикс,31);
    _пром =прав(_ДатаМатрикс,стрдлина(_ДатаМатрикс)-31);
    _6 = лев(_пром,6);
    _Хвост =прав(_пром,стрдлина(_пром)-6);
    
    _ДатаМатрикс = _31+Разделитель+_6+Разделитель+_Хвост;
    
    конецесли;
    

    Показать

    у меня так работает, возможно время идет ЦРПТ что то на ходу меняет

    Reply ↓
  43. opus70

    (42) все возможно я не претендую на 100% своего решения сделал загрузил работает и я не читаю на прямую файл *.csv (я копирую из буфера а сам файл открываю OpenOffice ) так более понятно для простых людей

    т.е. заказали 30 кодов получили файл открыли вставили , нажали кнопку записать штрих коды в базу и печать

    Reply ↓
  44. AlexeyK1

    (36)

    у меня проблема если скобка в серийном номере, при чем только открывающая «(»

    «010462005942174621lCwnRN%pO%n(Uu001D91003Au001D928lugLSHOzL7dPJE+jJx7TQbgN0OiH/iXuc0QK4O­c9ULdwdagxVJUKVplNq7vfh8EOrjQTXa/aqLt3gwq4Be3qg==»

    Пожалуйста, попробуйте сгенерировать !!

    DataMatrix генерит все ок, а вот DataMatrix GS1 нет, инвалид! внешнюю компоненту из УТ 11.4.10.89 использую

    Reply ↓
  45. AlexeyK1

    (41)

    на самом деле она не 1Совская. если посмотреть свойства «Компонента использует библиотеку ImageMagick, разработанную ImageMagick Studio LLC. Лицензия http://www.imagemagick.org/script/license.php«

    Reply ↓
  46. o_fedorinova

    (44) Аналогично. «КомпонентаПечатиШтрихкодов», версия «9.0.6.1025».

    Reply ↓
  47. kare

    (44)

    010462005942174621lCwnRN%pO%n(Uu001D91003Au001D928lugLSHOzL7dPJE+jJx7TQbgN0OiH/iXuc0QK4O­c9ULdwdagxVJUKVplNq7vfh8EOrjQTXa/aqLt3gwq4Be3qg==

    а ТипКода у вас какой в обработке?

    Reply ↓
  48. kare

    (44)

    010462005942174621lCwnRN%pO%n(Uu001D91003Au001D928lugLSHOzL7dPJE+jJx7TQbgN0OiH/iXuc0QK4O­c9ULdwdagxVJUKVplNq7vfh8EOrjQTXa/aqLt3gwq4Be3qg==

    У меня сформировался, только я чего то не понимаю у меня простой DataMatrix или DataMatrix GS1 и чем они отличаются?

    Reply ↓
  49. kare

    (42)

    u001D

    Алексей подскажите пожалуйста какой у Вас типкода указан?

    Reply ↓
  50. AlexeyK1

    (48) у вас это обычный datamatrix отличается отсутствием меток FNC.

    установите на мобильный приложение Pharma Trax Scanner сможете визуально увидеть отличия кодов. ниже скрины из программы обычного и GS1 DataMatrix.

    на сколько я понял как объясняли выше проблемы из-за отсутствия меток начнутся на кассе

    Reply ↓
  51. AlexeyK1

    (49)тип кода 24 хоть его и нет в описании на сайте ИТС 1С но работает

    Reply ↓
  52. kare

    (50)спасибо большое за разъяснения, а у вас случайно нет свежей компоненты? а то у меня при выставлении типа кода 24, ругается.

    Reply ↓
  53. AlexeyK1

    (52) да конечно это компонента печати из 11.4.10.89

    как с ней обращаться лучше смотреть в самой конфе, так как я просто выдернул из конфы Функции и процедуры и обращаюсь к ним

    Reply ↓
  54. kare

    (53)жму руку! спасибо!

    Reply ↓
  55. AlexeyK1

    (54)

    )))) да чо там )) плюсика достаточно ) рад помочь в борьбе с этой многоголовой гидрой в лице ЦРПТ

    Reply ↓
  56. kare

    (55)Гидра — это точно ;D

    Reply ↓
  57. kare

    (55)Алексей, а разделитель в обработке Вы какой указываете?

    Reply ↓
  58. AlexeyK1

    (57) в (42) рабочий кусочек кода, там и разделитель

    Reply ↓
  59. kare

    (58)принял!

    Reply ↓
  60. kare

    (58) у меня теперь тоже выдает ошибку на недопустимый символ, что я делаю не так?

    Reply ↓
  61. AlexeyK1

    (60) код и сообщение ошибки напишите

    Reply ↓
  62. kare

    (61)разобрался, помогло ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволыXML(ЗначениеКода), вопрос у меня сейчас корректно сформирована этикетка? Ваш код с открывающей скобко тоже пишет invalid bar, я так понял косяк в компоненте…?

    Reply ↓
  63. AlexeyK1

    (62) у вас сейчас код корректный, хочется верить что косяк в ЦРПТ который разрешил скобки в серийнике! беда в том что я теперь не знаю что делать ? написал в ЦРПТ два вопроса, первый про можно ли использовать простой DATAMATRIX ? и что делать если их код не формируется из-за скобки… молчат пока, а у меня беда, товар уже надо отправлять с фабрик

    Reply ↓
  64. kare

    (63)Сообщите пожалуйста что ответят.

    Reply ↓
  65. AlexeyK1
    Reply ↓
  66. o_fedorinova

    (63)

    Чтобы печатать серийник с левой скобкой, я использую внешнюю компоненту strokescribe,

    версия 5.2.8 от 2019-12-14

    Скачать здесь: https://strokescribe.com/ru/download.html

    Reply ↓
  67. AlexeyK1

    (64)Ответили там ссылки в ответе, ждет модерации

    короче, удалось победить скобку «(» надо в место FNC1-обязательный первый символ для DataMatrix(GS1) использовать Символ(29) хотя некоторые источники утверждают, что это ошибка и надо использовать именно FNC1 (код 232 на сколько я понял), но работает и программа корректно его декодирует, обратите внимание из-за косячного CodeType = 24 я вернулся к CodeType = 18

     _ДатаМатрикс = ДатаМатрикс ;
    Разделитель =Символ(29);
    _ДатаМатрикс = СтрЗаменить(_ДатаМатрикс, «u001D», Разделитель);
    _ДатаМатрикс = СтрЗаменить(_ДатаМатрикс, «u001d», Разделитель);
    _31=лев(_ДатаМатрикс,31);
    если найти(_ДатаМатрикс,Разделитель)=0 ТОгда
    _пром =прав(_ДатаМатрикс,стрдлина(_ДатаМатрикс)-31);
    _6 = лев(_пром,6);
    _Хвост =прав(_пром,стрдлина(_пром)-6);
    
    _ДатаМатрикс = Разделитель+_31+Разделитель+_6+Разделитель+_Хвост;
    конецесли;
    
    ПараметрыШтрихкода.Вставить(«Штрихкод» , _ДатаМатрикс);
    ПараметрыШтрихкода.Вставить(«ТипКода» , 18);
    

    Показать

    Хотя не знаю как наверняка отреагирует касса на подмену символа

    кто знает как FNC1 получить Символ(232) не работает

    Reply ↓
  68. AlexeyK1

    (66) Спасибо будем посмотреть!

    но удалось и штатными средствами победить

    Хотя не знаю как наверняка отреагирует касса на подмену символа

    кто знает как FNC1 получить Символ(232) не работает

    вопрос снят из ответа ЦРПТ понятно что начинаться должен тоже с Символ(29)

    Reply ↓
  69. kare

    (68)а я и не понял в итоге какой тип кода указывать в обработке?

    Reply ↓
  70. AlexeyK1

    (69)

    правильно 24, но данный тип кода, сейчас глючит на скобке «(»

    я нашел способ если самому вставлять FNC1 (символ(29)) в код маркировки и выводить через тип 18 то начинает работать так как надо

    я же в (67) указал полный код рабочий и пример какой выходит графический код что он рабочий и соответствует DataMatrix(GS1)

    Reply ↓
  71. kare

    (70)Понял, спасибо за ценную информацию, держимся вместе !!!

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *