Восстановление разделителей в кодах маркировки
Возвращает разделители групп (GS, символ с кодом 29) в коды маркировки, которые их потеряли: выгрузка в текст или Excel, буфер обмена и чужие системы часто срезают управляющие символы, после чего код перестаёт приниматься.
[GS] снимаются и расставляются заново.
Как это работает
- Из файла или текстового поля берутся коды: уцелевшие разделители и метки
[GS]снимаются, строки, не похожие на код, отбрасываются. - Коды группируются по длине. Пока длина не одна на всех — работа не начинается: разная длина означает разную структуру.
- По первому коду подбирается расстановка: сначала по справочнику шаблонов «Честного знака», а если код не лёг ни на один — по идентификаторам 91 / 92 / 93 / 8005, стоящим на одинаковых позициях во всех кодах пачки.
- Расстановку можно поправить: нажатие по символу ставит разделитель перед ним.
- «Проверить и восстановить» применяет разметку ко всей пачке и проверяет каждый код.
- Если все коды легли на одну структуру — пачка выгружается в TXT с настоящими разделителями.
На что смотреть
- Проверка требует, чтобы шаблон был один на всю пачку: разнобой означает, что в списке смешались коды разных товарных групп.
- Товарную группу по коду не определить: одна и та же раскладка полей используется десятками групп. Инструмент показывает все шаблоны, которым код подходит.
- Коды без GS1 — сигаретная пачка и её аналоги (шаблоны 4, 15, 22) — идут без идентификаторов применения и без разделителей: восстанавливать в них нечего.
- Если автоподбор ошибся, шаблон можно выбрать вручную — список под лентой символов.
- Подбор по идентификаторам — запасной вариант: позиция берётся, только если идентификатор стоит там во всех кодах пачки, но случайные совпадения возможны. Сверьте предпросмотр глазами.
- Коды без криптохвоста (отчитаны при включённом удалении хвоста) ни под один шаблон не подойдут — восстанавливать в них нечего.
- В файле разделители настоящие, кодировка UTF-8 без BOM, перевод строки CRLF.
- За один раз обрабатывается до 20000 кодов, размер файла — до 8 МБ.
- Справочник шаблонов — из документации API СУЗ 3.0: 80 действующих раскладок и 7 устаревших, которые ещё встречаются в старых выгрузках. Посмотреть структуру по товарным группам.
Поиск по документации маркировки
Вопрос обычной фразой — «что означает эта ошибка», «какая структура кода у молочной продукции» — и ответ по смыслу с цитатами на источник. База собрана из документации «Честного знака» и материалов этого раздела.
Спросить документациюЧто означает ошибка «отсутствуют разделители GS»
Код маркировки — не сплошная строка, а несколько групп данных подряд. У каждой
свой идентификатор применения: 01 — код товара из 14 цифр,
21 — серийный номер, 93 (или пара 91 и
92) — код проверки. Группы переменной длины по стандарту GS1
завершаются служебным символом-разделителем FNC1 — это и есть GS, Group Separator,
символ с кодом 29 в таблице ASCII.
Разделитель не печатается и в тексте никак не выглядит. Но для приёмной системы он — граница поля: без него непонятно, где закончился серийный номер и начался код проверки. Поэтому 1С, касса или личный кабинет отвечают «в структуре кода маркировки отсутствуют разделители GS» и отказываются принимать код, который на вид совершенно целый.
Где теряется разделитель
Пять причин, на которые приходится почти всё:
- Сканер в режиме эмуляции клавиатуры. Самая частая. На клавиатуре нет клавиши для символа GS, поэтому в режиме HID сканер его просто не передаёт. Лечится переводом сканера в режим виртуального COM-порта — обычно это служебный штрихкод из инструкции к модели.
- Excel. Открытая двойным кликом выгрузка теряет непечатаемые символы молча. Если коды прошли через таблицу — разделителей в них уже нет.
- Буфер обмена и мессенджеры. Код, пересланный в чате или вставленный
через блокнот, приходит без разделителей, а иногда с текстовой меткой
[GS]вместо настоящего символа. - Удалённый рабочий стол. При работе через RDP непечатаемые символы теряются по дороге между локальной машиной и сервером.
- Код собирали программно. При формировании кода скриптом или через API разделитель просто забыли вставить между полями.
Как понять, что разделители потеряны
Глазами два варианта кода неотличимы — символа не видно. Есть три надёжных способа:
- По длине. Код без разделителей ровно на столько символов короче, сколько их в нём было. Ожидаемые длины по каждой товарной группе — в справочнике шаблонов.
- В текстовом редакторе. В Notepad++ включите «Вид → Показ всех символов»: настоящий GS виден как отдельный служебный знак.
- Загрузите пачку сюда. Инструмент сразу скажет, были ли в строках разделители и на какие шаблоны код ложится по длине.
Почему нельзя вставить разделитель «после серийного номера»
Потому что неизвестно, где серийный номер заканчивается: его длина зависит от шаблона — 6, 7, 13 или 20 символов. В справочнике 87 раскладок, и по структуре кода товарная группа не определяется: одну и ту же раскладку используют десятки групп — от питьевой воды до строительных материалов. Поэтому инструмент подбирает расстановку по структуре и показывает все подходящие шаблоны, а не один «угаданный»; если автоподбор ошибся, шаблон выбирается вручную.
Частые вопросы
Что делать, если система пишет «в структуре кода маркировки отсутствуют разделители GS»?
Заказывать коды заново не нужно. Разделители восстанавливаются по структуре самого кода: загрузите пачку на этой странице, инструмент подберёт расстановку по справочнику шаблонов «Честного знака», проверит каждый код и отдаст файл с настоящими символами-разделителями.
Можно ли восстановить разделители, если исходной выгрузки уже нет?
Да. Разделитель ставится не в произвольном месте, а на границе групп данных, и эти границы заданы шаблоном кода. Пока известна структура — известны и позиции. Повторная выгрузка из системы маркировки нужна только если сам код побит: потерян символ или обрезана строка.
Почему сканер не передаёт разделитель GS?
Скорее всего, он работает в режиме эмуляции клавиатуры (HID): на клавиатуре нет клавиши для символа с кодом 29, и сканер его пропускает. Переведите сканер в режим виртуального COM-порта служебным штрихкодом из инструкции и подключите как оборудование в товароучётной системе — тогда разделители будут приходить.
Excel удаляет разделители — как выгружать коды правильно?
Не открывать выгрузку в Excel. Файл с кодами читается текстовым редактором (Блокнот, Notepad++), оттуда коды и копируются. Если таблица уже прошла через Excel, разделители в ней потеряны безвозвратно — их придётся восстанавливать по структуре.
Чем метка [GS] отличается от настоящего разделителя?
Метка — это три обычных печатных символа, приёмная система их не понимает. Настоящий разделитель — один невидимый символ с кодом 29. Инструмент снимает такие метки и ставит на их место настоящие символы.
Сколько разделителей должно быть в коде?
Зависит от товарной группы: обычно один — перед кодом проверки, у шаблонов с парой 91 и 92 — два, у кодов с максимальной розничной ценой — больше. У кодов без GS1 (сигаретная пачка) разделителей нет вовсе. Точная раскладка по каждой группе — в справочнике шаблонов.
Коды никуда не загружаются?
Пачка живёт в памяти открытой страницы: ни файл, ни сами коды на сервере не сохраняются — закрыли вкладку, и данных нет. Для статистики раздела мы запоминаем только код товара (GTIN, группа 01): он одинаков для всей партии и напечатан на каждой упаковке. Серийные номера — то, что делает код уникальным, — не сохраняются никогда.
Инструменты сделал Sensei — сервис ответов по базе знаний
Sensei отвечает на вопросы команды словами вашей же документации: подключаете wiki, регламенты, таблицы и историю обращений — сотрудник спрашивает обычной фразой и получает ответ с цитатами, по которым видно, откуда он взят.
Демо открыто без регистрации. Для своей базы знаний есть бесплатный тариф.