[01]04680049338249[21]HOA%DamnoJefc[91]8039[92]IKXGc2h8XOGp6AM6svWYoALDprUc8QnTYNetjNp6iKOy9TadzeTU9ByrV3FYZ0OMJqLkfG2hL8yC5Va6DnYxOg==
это результат длительных поисков решения задачи "Распечатать штрих код DataMarix из 1С 7.7 для маркировки"
В таком виде нужно передавать штрих код в библиотеку zint на которой основана компонента Ocvita Barcode ActiveX (http://ocvita.ru/ocvita-barcode) и метод НарисоватьШтрихкод в FormEx (http://dorex.pro/?projects&formex)
В постановлении о маркировке есть описание со ссылкой на ГОСТы, но ГОСТы написаны таким корявым языком, что правильно их можно прочитать только зная конечный результат :-(
нормальное пояснение есть только в Спецификации API, раздел называется "Формирование GS1 DataMatrix"
Для корректного формирования GS1 DataMatrix необходимо в начало получаемой строки кода маркировки добавлять признак символики – ASCII232, перед конвертацией в DataMatrix, в соответствии с требованиями GS1 General Specification, в противном случае технические средства не распознают код правильно и не смогут его корректно обработать. Ниже приведены ссылки на спецификации:
- GS1 General Specification (https://www.gs1.org/docs/barcodes/GS1_General_Specifications.pdf);
- GS1 DataMatrix Guideline (https://www.gs1.org/docs/barcodes/GS1_DataMatrix_Guideline.pdf ).
И вот этот самый ASCII232 оказался самым "секретным" символом, т.к. его не возможно "вставить" в строку штрих-кода. Кроме этого в штрих-коде должны быть символы GS которые соответствуют ASCII 29 и вполне себе нормально вставляются в штрих-код и в данных которые приходят из СУЗ (система управления заказами) символы ASCII 29 УЖЕ проставлены и в этом оказалась самая засада - компонента Ocvita Barcode "рушила" 1С если для строки штрих-кода содержащей символы ASCII 29 я устанавливал тип кодирования GS1_MODE.
В результате экспериментов стало понятно, что нужно удалить из исходной строки символы ASCII 29 и квадратными скобками обозначить разделители в согласно "the GS1 AI standards".
проверить штрих-код тоже оказалась не простая задача :-) самое простое скачать приложение на смартфон и просто сканировать, но рекомендованный техподдержкой ЦПРТ сканер PHARMA TRAX SCANNER (play.google.com/store/apps/details?id=pk.pharmatrax.pharmatraxscanner&hl=ru) принимает любой первый символ, а приложение "Честный знак" так же нормально распознаёт DataMatrix с любым первым символом.
Мне помог сканер NeoReader QR & Barcode Scanner (https://play.google.com/store/apps/details?id=de.gavitec.android) который правильно отображает первый символ ASCII232 в виде ]d2
Вообще меня поразило на сколько все затуманивают эту информацию - пишут что "не правильный FNC1", а как проверить ни кто не пишет, нашел вот эту публикацию (http://barcodefaq.com/2d/gs1-datamatrix/) и хоть что-то стал понимать :-)
вот ещё немного на русском https://ecoprint.spb.ru/datamatrix/
Если первый символ ASCII232, то некоторые устройства воспринимают его как управляющую команду и не передают его "дальше", т.е. штрих-код начинается с "01", а если первым символом (по ошибке) является ASCII 29, то в передаваемой строке он будет присутствовать и начало штрих-кода будет Симв(29)01
ДОПОЛНЕНИЕ 29.02.2020 (ну очень вовремя) от Честный знак
Рекомендуемый алгоритм кодирования и преобразования кода маркировки в Data Matrix
(первый символ должен быть "FNC1, имеющий код 232 в таблице символов ASCII")
https://xn--80ajghhoc2aj1c8b.xn--p1ai/info/news/rekomenduemyy-algoritm-kodirovaniya-i-preobrazovaniya-koda-markirovki-v-data-matrix/
Образец маркировки который получен из СУЗ в формате PDF (для сравнения результатов сканирования)
Небольшая подсказка по настройке Ocvita Barcode:
Масштабом подгоняем размер DataMatrix - простое изменение размера внедрённого объекта не всегда подходит.
Кодирование (input_mode) = 2 - это номер значения GS1_MODE
В прикреплённой обработке пример печати только DataMatrix с размером штрих-кода 22*22 мм
при выводе печатной формы на экран DataMatrix отображается перечеркнутым квадратом, но если распечатать, то печатает правильно. Настройка печатной формы осуществляется при просмотре в масштабе 200%
Проверено на: 7.70.027.