Маркировка обуви, печать штрихового кода DataMatrix с помощью Ocvita Barcode, FormEx или Zint. 1С 7.7
Задачи пользователя - Этикетки, ценники
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
[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.
Вступайте в нашу телеграмм-группу Инфостарт
1С 7.7 Маркировка обуви печать штрихового кода DataMatix Ocvita Barcode Zint FormEx Честный знак ЦРПТ
См. также
Этикетки, ценники Пользователь 1С:Предприятие 7.7 1C77 Здравоохранение, медицина, стоматология Россия Абонемент ($m)
Поскольку в еФарма нет печати кодов DataMatrix в нормальном виде, только в виде QR-кода, возникла идея написать данную обработку.
1 стартмани
03.05.2023 4431 2 Eisent 0
Этикетки, ценники Пользователь 1С:Предприятие 7.7 1C77 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)
Печать этикеток для маркировки остатков по файлам из Честного Знака, для одежды, обуви и т.п.
1 стартмани
25.01.2021 8886 8 M_W_W 1
Этикетки, ценники Разработчик Пользователь 1С:Предприятие 7.7 1C77 Россия Абонемент ($m)
Предназначено для тех, кто еще и в классике программирует, но уже начал подзабывать.
1 стартмани
20.08.2020 10671 20 AlexHelmer 5
Пакетная печать Этикетки, ценники Пользователь 1С:Предприятие 7.7 1C77 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Легкая промышленность, мода и одежда Россия Управленческий учет Платные (руб)
С помощью обработки 1С 7.7 можно коды маркировки вводить вручную или загружать файлы в формате csv и печатать либо на ленту (принтер этикеток) либо на лист (офисный принтер). Есть возможность создать разные шаблоны этикеток с настраиваемым выводом текста и логотипа, с указанием числа рядов и столбцов при печати этикеток на офисный принтер. Имеется проверка штрихкодов на соответствие форматам согласно документа "Протокол информационного обмена (ОФД). Поддерживаются форматы всех товарных групп, подлежащих маркировке или участвующих в эксперименте (алкоголь, изделия из меха, табак, обувь, лекарства, текстиль, шины и т.д.) Выделение из ШК идентификаторов применения (AI) и их показ. Расшифровка максимальной розничной цены (МРЦ) из Datamatrix табака.
5124 руб.
12.03.2020 22814 17 4
Обмен с ГосИС Разработчик Пользователь Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)
Наша организация импортёр обуви, клиенты есть разные и крупные типа wildberries и небольшие розничные магазины ИП на пару сотрудников. Вот для небольших розничных магазинов я и написал эту статью, при этом у нас всё сделано "по серьёзному", а пишу я про то, чем ни разу не пользовался :-)
28.01.2020 13825 Mx00 58
Этикетки, ценники Бухгалтер Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Россия Абонемент ($m)
Печать ценников номенклатуры по типам цен списком 1С 7.7 ТИС.
1 стартмани
21.11.2019 13936 6 war41k 0
Розничная торговля Этикетки, ценники Бухгалтер Пользователь 1С:Предприятие 7.7 Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)
Печать ценников для конфигурации "Торговля и склад ред . 9.2". Платформа "1С:Предприятие 7.7"
2 стартмани
28.11.2017 22676 6 dbolotin 0
Розничная торговля Этикетки, ценники Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)
Внешняя печатная форма для документов Перемещение ТМЦ, Поступление ТМЦ и любых других с реквизитами табличной части Номенклатура, Количество, Цена.
1 стартмани
17.11.2017 17500 20 aksyoma 2
Хотел узнать, может Вы сами как-то сумели вставить.
1С относительно своей обработки печать штрихкодов в 1С Торговле и склад (active barcode) говорит, чтобы мы копировали его.
А как с нуля вставлять - сие есть тайна, к сожалению.
опиши сравнение производительности и использования памяти при печати от 5000 кодов маркировки, если есть заметное преимущество, то буду перенимать опыт, а без сравнения это пустая болтовня ;-)
кроме самой программы нужно перестроить мозги у людей и логистику обращения с товаром, а кроме всего прочего к этому процессу не готовы даже в самом ЦРПТ :-(
в общем если вы можете перейти на УТ 11.4 в сумму до 500 т.р., то переходите (у меня переход оценивался в сумму более миллиона, поэтому остались на ТиС)
всё это ИМХО и у каждого может быть своя ситуация ;-)
я написал короткую заметку для розницы
но это не про внедрение в 1С, а про понимание ситуации
чтобы разобраться что делать в 1С я бы рекомендовал поставить себе последний релиз УТ 11.4 и пройти в ней все необходимые процессы, а потом уже можно думать как переносить это в свою конфигурацию.
есть решение которое может сильно облегчить внедрение маркировки и цена у них вполне адекватная - работы ооооочень много
Собственно вопрос в том удалось ли вам сгенерить с штрихкод идентичный полученному из ЧЗ.
Спасибо.
DataMatrix формируется по избыточному алгоритму и ещё там какие-то есть нюансы, но главное чтобы при считывании были получены нужные данные. NeoReader QR & Barcode Scanner позволил мне наглядно увидеть какие данные считываются с DataMatrix. Проверку в ЧЗ пройдёт и не совсем корректный DataMatrix, т.к. в приложении "умный алгоритм" и он может игнорировать неправильные символы, а сканеры и ТСД которые используются на кассе или на складе "не такие умные" и им нужно чтобы всё было на своих местах (в статье про это написано в разделе "Формирование GS1 DataMatrix")
1. Печатает марку правильно. По крайней мере мобильные приложения считывают и показывают что первый символ FNC и еще два последующих FNC в нужных местах. ЧестныйЗнак "кушает такую маркуЭтикетку"
Однако, когда сканером читаем такую марку с этикетки, то полученная строка Не содерожит первый символ GS (который на моб.приложениях отображается FNC)
Тут же эту марку распечатываем через 1С8 и ее встроенную компоненту печати штрихкодов, получаем маркуЭтикетку. На ней мобильные приложения также показывают первый символ FNC и еще два последующих.
Теперь считываем сканером эту марку и в полученной строке получаем первый символ GS
Сканер настроен в COM/
Теперь вопрос, а как правильно должно быть при чтении марки сканером???
Я, конечно, обрабатываю считанную строку путем замены всех GS на пусто,
а потом уже вырезаю gtin и serial
А как будут работать оборудования и программы у покупателей моих товаров, когда они считают марку?
Ведь, получается
считанная марка после Ocvita Barcode отличается от считанной марки 1Скомпоненты,
хотя обе показываются разными мобильными приложениями правильно
прочитайте ещё раз статью и используйте NeoReader QR & Barcode Scanner и сравните с оригинальным DataMatrix от ЦРПТ-СУЗ, если и это не поможет, то прикрепляйте ваши DataMatrix и я вам их отсканирую
Серьезно - не серьезно, уже совсем крыша едет. Дилемма в том, что какие-то разные результаты получаются печатай я эту марку через ocvitaBarcode и через 1Скомпонента печати штрихкода.
При этом, полученная этикетка читается ЧЗ, pharma trax scanner, как нормальная. Везде показываются нужные разделители в нужных местах.
А зацепился я за то, что при считывании марки после ocvita и после 1C я увидел нехватку последнего символа в серийном номере. Здесь забил тревогу.
Оказалось, что считанная марка после ocvita начиналась сразу с 01 gtin и далее и еще 2 gs в строке
А после 1С строка начиналась gs 01 gtin и далее и еще 2 gs в строке
В общем, все это ....
Ладно, с этим разобрались. Сверил, как должна считываться марка с маркой от ЧЗ, полученной в пдф.
В моем случае ocvita все делает правильно.
Добрался до чекмарк от клеверенса. там все стало ясно.
А вот проблема, которая у ocvita обнаружилась. причем еще у других людей тоже.
В моем случае.
Есть файл от ЧЗ с 9 марками. Открываю только npp+, никаких excel или, тем более, сохранить
Печатаю этикетки.
Смотрю разными приложениями. У всех все ОК.
Но у двух марок, криптохвост заканчивается не на == а на ===
Причем, эти две марки в файл расположены посередине среди всез 9 марок.
Опять же, приложения все говорят норм, ЧЗ читает.
Вроде и ну его этот криптохвост.
Ведь в ЧЗ передаем только gtin и serial
Вот такие дела с хвостом.
И не только у меня
А после 1С строка начиналась gs 01 gtin и далее и еще 2 gs в строке
А ведь в начале не должно быть GS, там должен быть FNC1.
Получается, Оквита правильно печатает, а не 1с8.
FNC1 (или FNC или GS) - это НАЗВАНИЯ разделителей, но в зависимости от места в штрих коде разделители разные: в начале ASCII232, а в середине ASCII 29
документация так замысловато написана, что без пол литра не разберёшься, да и сами ЦРПТэшники путают всех
Насчет настроек не спорю - всё может быть. Но про проблемы при распознавании этикеток, распечатанных из типовых 1с8, уже звучало неоднократно на разных ресурсах.
PS. ASCII232 это какой-то секретный символ, и до сих пор я не понимаю, что он означает в техническом плане.
Однозначно это не буква "и" в таблице ASCII, а какой-то технический аспект нанесения ШК в формате GS1, который позволяет его при чтении отличить от других форматов и который передает в сканер последовательность ]d2, но на самом деле этих трех символов в самом ШК не закодировано.
PSS. В ESC-последовательностях (для Zebra) используются такие обозначения символов GS:
]1 - Печать символа FNC1
[1D - Печать символа GS
сканер считывает картинку и разбирает её по алгоритмам, чтобы правильно разобрать ему нужно объяснить что хотим получить, т.к. в зависимости от типа желаемого результата можно получить разные данные :-)
первый символ ]d2 управляющий именно для "самого сканера" и не является данными которые мы хотим получить, поэтому он "исчезает" ещё в "самом сканере", а вот если мы сканируем с помощью смартфона, то _можем_увидеть_ этот символ в получаемых данных
Мне осталось только приемку сделать в 1С для ЧЗ. у меня семерка, пилим ее.
остальное готово и протестировано: печать этикеток из csv файлов, ввод марок в оборот, вывод из оборота, отгрузка, онлайн-кассы-продажи и возвраты. (конечно, же без ситуаций, на которые сам ЧЗ либо не дает ответа, либо пишет, в настоящее время этот функционал у нас еще не разработан)
Когда апи утрясется, а заодно и сам ЧЗ станет стабильней работать, займемся апи.
Мы продавцы в опт немного(неучастникам и выбытие из оборота) и розница. Так что, я у себя вижу больше чем 10% готовности.
Я от них так и не смог на этот счет добиться внятного ответа.
Он вам делал по индивидуальному заказу или в общем виде?
Можете мне написать в личку (я вам писал еще в ноябре, но не ответили).
1 способ
1. Из ЧЗ выгружаем КМ в файл csv
2. Создаем справочник КМ привязанный к Номенклатуре
3. Загружаем КМ из csv
4. Распечатываем этикетки с помощью ocvita.barcode с кодом товара
5. В документе чек добавляем реквизит КМ
6. При сканировании КМ подставляем Номенклатуру
7. Передаем в ККМ КМ (для штрих: 1 на старых ПО в виде hex, 2 с лицензий gtin & serial)
2 способ
1. Из ЧЗ выгружаем КМ в файл pdf или psd
2. Распечатываем
3. В документе чек добавляем реквизит КМ
4. По кнопке сканируем КМ в чек
5. Передаем в ККМ КМ
выгрузку из ЧЗ делаем ручками
зависли на прошивке ККМ и оплате ОФД
по новым накладным пока нет информации
все настройки в 1с сделал за 3 вечера, +месяц на чтение форумов, писем и рекламы
я всегда напоминаю про возвраты - в них самая сложность :-)
например возврат поставщику как будешь делать? :-D
ТСД: Купили не дорогие на андроиде
подключение по RDP прямо в 1С
сделал обработку которая как раз помещается на экран
штрих-код передаётся в разрыв клавиатуры
фокус ввода всегда на одном реквизите и в зависимости от открытой закладки обрабатывается по разному
пришлось на складе установить промышленную WiFi точку доступа иначе всё сильно тормозило и обрезали штрих-код на 32 символа
теперь всё летает,
под каждый документ создаётся операция ТСД (или несколько, могут один приход втроём сканировать)
потом можно сверить исходный документ и данные ТСД
сами кладовщики довольны - обнаруживают пересорт при отгрузке и своевременно исправляются
закончу маркировку и будем делать адресное хранение (т.к. КМ уникальный, то адресное хранение сильно упрощается)
у меня справочник КИ не подчинён номенклатуре, но содержит ссылку на номенклатуру - это не принципиально, но мне так удобнее.
зачем использовать 1Д ТСД я тоже не понимаю - выбирать серийник может и не сложно, но не на складе в момент приёмки фуры нового товара :-)
я в [32] уже описал как сделано у меня, а другому разработчику понравится другая реализация...
если у вас справочник КМ с ссылкой на Номенклатуру, то при свертке базы Номенклатура не удалиться. Мне показалось проще сделать подчиненный и как справочники Цен, Единиц и т.п. видеть какие у Номенклтуры есть КМ и какой их статус + поиск и выбор по подчиненному справочнику быстрее работает код для 1Д сканеров.
Приведите пример как у Вас написан код если марка не читается и нужно найти КМ, вот мой пример для печати Этикетки и ЧекаККМ:
ОбGTIN = СоздатьОбъект("Справочник.GTIN");
ОбGTIN.ИспользоватьВладельца(ТекЭлем);
Если ОбGTIN.ВыбратьЭлементы(1)=1 Тогда
Если ОбGTIN.Выбрать(1)=1 Тогда
GTIN = ОбGTIN.ТекущийЭлемент().Наименование;
КонецЕсли;
КонецЕсли;я понял Вас - вы про программирование ТСД?
Но все же, если не читается код или не сработал сканер (тсд), имея обувь на руках, как найти в Вашем справочнике нужную КМ?
у нас есть понятие "уценённый" товар и для него заводится отдельная карточка в справочнике Номенклатура, при "переводе" товара из нормального в уценённый в справочнике КодыИдентификации меняем Номенклатуру и "маркировка" переключается на уценённый товар.
это всё можно сделать и в подчинённом справочнике, но мне удобнее плоский.
я скачал Оквиту - мой КМ не читается обработкой, которая прилагается в Демо1с к программе Оквита.
Проблема в спецсимволах 100%.
Скачал на ИС обработку для Розницы - проверяю пока через нее. Она корректно формирует ШК.
- моб.приложение на андроид - Pharma Trax Scanner
а для совсем уж контрольной проверки:
- использую ЧекМарк (мобильное приложение для Андроид от Клеверенс)
Этими же приложениями сравниваю марку, полученную от ЧЗ в ПДФ, так сказать, для собственного успокоения, что получается и сканируется у меня, после ocvita
(25)
010290000045865921TDGuv?4DS%MbL91802992XWvJ9U1nf7QTf7MqitBTZgwF1xoZ7eRabtbKJIH8fHF
напечатали, считали и получили лишний символ в конце "="
010290000045865921TDGuv?4DS%MbL91802992XWvJ9U1nf7QTf7MqitBTZgwF1xoZ7eRabtbKJIH8fHF
Штрихкод, который печатается данной обработкой для 1С 7.7 через OcvitaBarcode.ocx, к сожалению, тоже не до конца соответствует требованиям ЦРПТ - он содержит во всех позициях FNC1, а ведь перед AI 91 и 92 должен быть GS
Содержимое штрихкода:
(01) 04680049338249 [14]
(21) HOA%DamnoJefc [13]
(91) 8039 [4]
(92) IKXGc2h8XOGp6AM6svWYoALDprUc8QnTYNetjNp6iKOy9TadzeTU9ByrV3FY
Хорош тем, что различает управляющие символы в ШК, в отличие от других приложений, которые не различают FNC1 и GS.
Через Ocvita "правильный" ШК в формате GS1 Datamatrix в точном соответствии с форматом ЦРПТ, не получить.
Но можно получить через zint.exe, указав правильно ключ --gssep
Ocvita как давно обновлялась? У zint.exe ключ для вывода GS вместо FNC1 в середине ШК появился недавно, и именно только ради русского проекта по маркировке, т.к. только в нем такие требования к GS1 Datamatrix (который, вообще-то допускает FNC1 во всех позициях ШК для разделения)
PS. Могу для сравнения "верный с т.зр. ЦРПТ" выслать ШК для проверки этим приложением, чтобы "поймать нюансы".
но пока я так и не понял почему чекер в середине кода пишет FNC1, хотя "железные" сканеры возвращают симв(29), видимо там программно это обрабатывается, и NeoReader тоже возвращает симв(29)
В любом случае, есть приложение которое позволяет различить разделители, и есть программный способ печатать GS1 DM, используя разные разделители.
Т.е. теорию я практикой в любом случае подтвердил.
Подробнее смотри обсуждение , пост 641:
Ванька из Честного Знака придумал вот какую мульку - первый символ в датаматриксе = FNC1(не представлен в 1с и его уникоде), а далее между блоками поставить 2 знака GroupSeparator (в 1с символ(29)).
вот как хош, так и ставь FNC1 туда.
чувак из Zint, недавно тоже чесал репу на эту тему, и релизнул апдейт для ру-коммьюнити с флагом -gssep, который генерит датаматрикс именно так, как я описал выше.
можно ковырять так:
ФормулаПечати= "[01]"+GTIN14Знаков+"[21]"+Serial+"[91]"+ServiceCode+"[92]"+КриптоХвост;
"zint.exe -b 71 -o """ + ИмяВременногоФайла + """ --gs1 --gssep -d """ + ФормулаПечати +""""
ессно минус такого подхода - приходится дербанить полный код марки на составные части.
но как с такими флагами, подать еще и флаг "--binary" (то есть данные as is) пока не придумал.
Я лично проверил на zint версии 2.7.1 — работает.
У тебя есть готовая обработка с zint?
поделишься? :-)
или сделай публикацию и я в своей дам ссылку на правильный вариант ;-)
Не могу заставить сканеры, подключенные как клавиатурные (нужно именно так), читать DataMatrix коды, разбивает на 3 штрихкода (см. скрин)
При этом в блокнот сканирует нормально. Проблема, видимо, в компоненте 1С 7.7 Scaner1C.dll
которую взял из "1С:Сканер штрихкода (COM)"
сканеры Honeywell VG1452, настройки по дефолту, перевод в режим "COM порта" и добавлен суффикс.
в самом начале когда пробовал настраивать в клавиатурном варианте, то передавались русские буквы и решил с этим не заморачиваться и настроить в режиме "COM порта" и ещё в терминальном режиме клавиатурный ввод получился очень медленным.
для моего сканера есть настройка "Передача функционального кода" (Function Code Transmit) и там видимо можно сделать замену "спец.кодов", но я с этим не разбирался.
на ТСД где у нас используется "клавиатурное подключение" настроена замена функциональных кодов на символ @ и дальше 1С с этим разбирается.
При считывании кода маркировки от производителя выходит ошибка: "Недопустимое значение параметра (параметр номер '1')". И это даже не GS1, а обычный DataMatrix. Хотя коды, которые печатали сами для остатков, воспринимает без ошибок. Сравнивал считывание сканером и приложением Честный знак, коды идентичны. Проблема в алгоритмах обработки кода в 1С.
В ночь с 29 февраля на 1 марта обновили систему ЧЗ, сами ЧЗ выпустили новость о кодировке КМ.
В связи с этим, у всех пользователей программ 1С при заказе кодов на остатки появляется сообщение об ошибке.
Надо установить расширение, которые будут выпущены 03.03.2020. После установки проверьте работоспособность.
Обращайтесь к партнерам 1С.
если ты пришёл за помощью, то писать нужно не утверждая "символа 29 нет", а напиши, что ты его не видишь :-)
даже приложение Честный знак тебе его показывает, только у тебя ещё мало опыта ;-)
отсканируй свой штрих код и желтый образец в публикации и под микроскопом посмотри на ПОЛОЖЕНИЕ первого символа в блоке "Код маркировки"
надеюсь понятно написал ;-)
прикладываю скриншот мобильного приложения честный знак на Андроид версии 4.4.2
первый символ 0 смещён относительно всего текста - это и есть признак того, что там есть симв(29)
можно другими сканерами посмотреть, но для данного обсуждения достаточно этого скриншота
PHARMA TRAX SCANNER именно ПОКАЗЫВАЕТ символы, но первый символ показывает не так как нужно
NeoReader QR & Barcode Scanner считывает так как есть в DataMatrix, при этом смив(29) не визуализирует, но если полученную строку проанализировать, например в экселе, то покажет код символа 29
2.2.1. This is achieved by using the Function 1 Symbol Character (FNC1) in the first position of the data encoded. It enables scanners to process the information according to the GS1 System Rules.
The FNC1 (codeword 232) has two separate uses in GS1 DataMatrix:
■ Start character.
■ Separator character to separate element strings that are not in the predefined list (see Table 2-3).
Important: In accordance with ISO/IEC 15424 - Data Carrier Identifiers (including Symbology Identifiers), the Symbology Identifier is the first three characters transmitted by the scanner indicating symbology type. For a GS1 DataMatrix the symbology identifier is ]d2.
Concatenation
Using GS1 DataMatrix, it is possible to concatenate (chain together) discrete element strings (Application Identifiers (AIs) and their data) into a single symbol. When the element string is of predefined length, no separator character is required when another element string is added to it. When the element string is not of predefined length, it must be followed by a separator character when concatenating more element strings. The separator character may be FNC1 or the control character <GS> (ASCII value 29 (decimal), 1D (hexadecimal)). FNC1 is the character that has the codeword value 232. When either FNC1 or <GS> is used as a separator character, the scanner must transfer the character value as control character <GS>.
A separator character is never required after the last element string encoded in the symbol.
и 29.02.2020 ЧЗ косвенно признал, что всех обманул ;-)
Состояние("Формируется печатная форма "+СтрокаПроцесса<<?>>(iii/ВсегоКМ));
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(83)}: Функция не обнаружена (СтрокаПроцесса)
Состояние("Формируется печатная форма "+СтрокаПроцесса(iii/ВсегоКМ)<<?>>);
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(83)}: Неопознанный оператор
<<?>>КонецЦикла;
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(108)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
Таб<<?>>.Опции(0,0,0,0,"Маркировка","Маркировка");
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(109)}: Переменная не определена (Таб)
Таб<<?>>.ТолькоПросмотр(1);
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(110)}: Переменная не определена (Таб)
Таб<<?>>.ПараметрыСтраницы(1,100,,,0,,0,0,0,,,);
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(111)}: Переменная не определена (Таб)
Таб<<?>>.Показать("Маркировка","");
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(112)}: Переменная не определена (Таб)
Таб.Показать("Маркировка"javascript:void(0);,"");<<?>>
{C:\Users\Zorro\Downloads\PUBID_1172346-PrintDataMatrixFrom1C77.ert(112)}: Обнаружено логическое завершение исходного текста модуля
При проверке модуля обнаружены синтаксические ошибки!
я понимаю, что обработка сложная и стоит денег, но сам механизм вывода DataMatrix можно отдельным постом выложить, хотя это я свою лень оправдываю ;-)
Сервис.НарисоватьШтрихкод(Картинка,ТипЧислом,ТекстШтрихкода,0, ,Режим,,РежимВых)
Сам код не сложный, но пришлось некоторые сведения с трудом добывать (например, как сделать чтобы при выводе в начале был FNC1, а дальше GS, а не тоже FNC1, также были глюки при выводе некоторых серийных номеров). Разработчик (АЛьФ) по моим просьбам доработал компоненту, чтобы решить эти вопросы.
Сложность парсинга КМ в зависимости от Товарной группы и устаревших спецификаций (для лекарств).
Если "ищущие" купят решение по ссылке (которую я привел выше), то там будет и пример и открытый код ;)
Код закрыт только в бесплатной демо-версии.
по "начальной" логике Честного Знака, после печати КМ, полный код не должен храниться в базе...
[01]04680049338249[21]HOA%DamnoJefc[91]8039[92]IKXGc2h8XOGp6AM6svWYoALDprUc8QnTYNetjNp6iKOy9TadzeTU9ByrV3
Привет из несолнечной Белоруссии :)
Спасибо дружище. Без твоего поста так и не смог бы правильно напечатать сей знак.
Максим, вы в статье пишете "компонента Ocvita Barcode "рушила" 1С если для строки штрих-кода содержащей символы ASCII 29 я устанавливал тип кодирования GS1_MODE".
Вопрос - как вы решили эту проблему, чтобы подставить FNC1? Я правильно понимаю, что речь идет о параметре input_mode, и при его изменении (как программном, так и интерактивном) - 1С вылетает.
на сколько я помню, в данном решении датаматрикс не полностью соответствует предъявляемым к нему требованиям, но с учетом дополнительных разъяснений ЦРПТ все участники должны корректно отрабатывать такие датаматриксы и у нас проблем с контрагентами нет.
И надо ли что-то указывать в в поле текст(barcode) - это в свойствах объекта ocvita? Как я понимаю, это просто шаблон штрих-кода. И если я его оставляю пустым - при нажатии на ОК конфигуратор вылетает...
Далее пытаюсь в поле Текст(barcode) очистить старый шаблон (т.к. мне коллеги сказали, что он необязателен), нажимаю ОК - конфигуратор падает.
ОК, указал шаблон "[01]12345678901234" (типа пока буду выводить только группу с кодом 01) - тогда при нажатии на ОК не вылетает (если идентификатор группы 01 указывать без скобок или с круглыми скобками- конфигуратор вылетает).
При выводе печатной формы в коде обработки передаю код штрихкода, строку "[01]12345678901234", и вывожу печ.форму на экран.
если я передаю строку без скобок "0114607040962904", или с круглыми скобками "(01)14607040962904" - 1с предприятие вылетает. Если с квадратными скобками [01]14607040962904 - не вылетает, ШК на печ.форме виден как зачеркнутый квадрат, при предпросмотре и печати - как линейный ШК, который сканером не сканируется.
Возможно, дело в том, что параметр input_mode = 0.
ОК, погуглил, нашел, что для моего ШК надо режим "GS1_MODE", и для этого надо input_mode = 2. Установил это в коде обработки.
В таком варианте выводимый шк без скобок и с круглыми скобками приводит к вылету предприятия, с квадратными появляется окно с ошибкой "DEBUG ERROR", при нажатии на ОК предприятие тоже вылетает.
PS: Сам объект ocvita barcode скопировал из обработки Ёпрста, в свойствах объекта указано УстановитьКод(Таб.ТекущийОбъект)
Процедура УстановитьКод(Объект)
Объект.input_mode = 2;
Объект.symbology = 81; //gs1
Объект.barcode = QRcode; //в переменной QRcode указана строка с ШК
КонецПроцедуры
С теми же шаблонами - вы их оставляли в свойствах ocvita-объекта? И что именно там указывали? Или все равно, что там указывать, надо вывод на печать это не влияет? Просто у меня, по аналогии со stroke scribe ощущение сложилось, что там пишется шаблон штрих-кода, и тогда непонятно, например, как указывать в шаблоне группы переменной длины?...
Я попробовал обернуть в квадратные скобки идентификаторы применения, и передаю в ocvita barcode такую строку
[01]04610094003977[21]5D001U[93]Op7g (это молочка)
В итоге считывает просто как датаматрикс, и при считывании сканером эти квадратные скобки отображаются, где я мог ошибиться?
У меня идентичные настройки во вкладке Основные.
Во вкладке еще - также, как и у вас в изначальном тексте (кроме "руинящего" 1с-ку значения "input_mode".
Результат при сканировании - такой же (приложил).
Может различия в остальных вкладках? Можете показать?
Максим, вы можете помочь мне в разрешении моего вопроса? В долгу не останусь)
GS1 Databar Expanded Stacked - я с ним не сталкивался, но предполагаю, что строка с квадратными скобками должна быть другая, т.к. твоя строка с обычным датаматриксом выводится и 1С вылетает при переключении на GS1 Databar Expanded Stacked
А в указанной выше процедуре пофиг, в каком порядке команды установки свойств ставить, на работу это не влияет?
Да, я менял по-разному в уже выведенном объекте, 1С вылетает только при изменении параметра Input_mode =(
Я имел в виду, что возможно средствами ocvita barcode менять настройки (в т.ч. и содержимое кода) на уже выведенном на просмотр табличном документе
Я тут просто поставил zint, и когда в ней указываешь только группу (01), она ненормально воспринимает последний 14й символ, говорит, что неправильный ШК. И если я его удаляю, оставляя 13 символов - она сама добавляет 14й, и считает, что все ок. Сейчас, когда я пишу это сообщение, мне это повторить не удалось, но навело на мысль попробовать добавить еще группу. И с ней получилось. Теперь буду пробовать добавлять еще группы, правда, непонятно, как добавлять группу с переменной длиной, ведь с пустым шаблоном у меня все равно не получилось сохранить в конфигураторе объект - вылетает...
... почему вдруг заработало - я хз, разве что попытался зарегить библиотеку zint.dll (причем зарегилась она с ошибкой)... но вроде как работает. Теперь буду проверять, правильно ли он читается, примет ли такой ШК моя 1с?...
И проверил - моим сканером в моей программе этот ШК прочитался... Это, конечно, еще не 100% гарантия, но все же.. попробую еще и в других местах просканировать...
Первое фото - это как моя тестовая обработка через оквиту распечатала, второе фото - это рабочая этикетка, там печатаю через коды принтера.
Кстати, вторая - это рабочая))) И никто из наших покупателей не жаловался. То ли у них тоже работает, то ли они вообще этот ШК не сканируют...
Я уже думал через формекс попробовать, опять гуглить надо, как через него ШК печатать, раньше не делал..
Про старую версию zint в оквите я уже читал, но вот ведь в чем дело - печатает же, и сканирует. Но - только если есть группа (3103), что не есть хорошо...
Какой код проверить надо?
(01)14607040965332(3103)002595(11)230614(10)23165(21)00083187
Этот?
Можете сами на демке проверить.
Только в макете печ. формы в свойствах рисунка вместо 71 поставьте нужный вам тип кода:
Когда убираю группу [3103]002595 - сканировать перестает, т.е. сканер вообще не видит сканер.
Пока задачу приостановили, начальник хочет поговорить в руководством о том, чтобы мы перешли на QR Datamatrix, которые у них уже используются в других местах.
Буду ждать теперь, что решат, то ли на QR, то ли на этот вариант GS1 переделывать.
Спасибо всем за помощь!!!!
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1172346
Создание 24.12.19 13:43
Обновление 02.12.21 04:48
Просмотры 45540
Загрузки 39
Рейтинг
19
Комментарии 183
Код открыт Да
Рубрики Этикетки, ценники
Кому
Разработчик
,
Пользователь
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 7.7
Конфигурация
1С:Бухгалтерия 7.7
,
1С:Комплексная 7.7
,
1С:Торговля и склад 7.7
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Управленческий учет
Доступ к файлу Абонемент ($m)