Пример печати 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 не будет опубликован. Обязательные поля помечены *