Символ GS и FNC1 в Data Matrix: настройка сканера и датаколлектора для 1С

Что такое символ GS, ASCII 29 и FNC1

При работе с системами маркировки и сканированием штрихкодов часто возникает путаница между символами GS, FNC1 и другими служебными знаками. Эти символы не видны глазу, но без них невозможно корректно распознать структуру данных в коде Data Matrix, особенно при передаче информации в 1С или другие учетные системы. Символ GS (Group Separator) соответствует коду ASCII 29 и используется как разделитель между различными элементами, например, серией, сроком годности и кодом товара.

В системах, где данные поступают из сканера напрямую, GS играет роль маркера, указывающего программе, где заканчивается одно поле и начинается другое. Например, в коде маркировки лекарств или одежды такие символы встречаются между группами данных и помогают парсить строку правильно.

Роль символа GS в кодах маркировки

Когда сканер считывает Data Matrix, он преобразует закодированные данные в строку символов. Без GS эти данные выглядели бы как один непрерывный поток символов, и программа не смогла бы определить, где начинается номер партии, а где — срок годности. Именно поэтому GS — ключевой элемент в структуре кода. Он обозначает логическую границу, незаметную пользователю, но понятную оборудованию и программам.

Пример структуры кода Data Matrix

В процессе настройки сканера часто приходится указать, как трактовать GS: передавать ли его как управляющий символ (ASCII 29), заменять на другой знак (например, «\») или просто удалять. Это важно, поскольку от формата зависит, поймет ли 1С структуру данных.

Чем отличаются GS, FNC1 и скрытые разделители

Хотя GS и FNC1 часто упоминаются рядом, они выполняют разные роли. Символ FNC1 — это служебный признак, который сообщает сканеру, что он имеет дело с кодом в стандарте GS1 (например, в коде GS1 DataMatrix). Он не разделяет данные, а лишь указывает их формат.

GS, напротив, именно разделяет логические элементы в составе одной строки данных. Но в некоторых кодах применяются и «скрытые» разделители — символы, которые не выводятся при считывании, но используются сканером для структурирования информации внутри себя. Поэтому важно уметь различать:

  • GS (ASCII 29) — реальный разделитель данных.
  • FNC1 — признак стандарта GS1, встречается чаще всего в начале кода.
  • Скрытые разделители — внутренние символы устройства, не передающиеся в систему, но влияющие на логику разбора.

Чтобы проверить, как сканер передает эти символы, можно использовать текстовый редактор, отображающий управляющие коды, или включить режим эмуляции клавиатуры, где виден результат.

Почему эти символы не видны в обычных редакторах

Большинство текстовых приложений не отображают управляющие символы, к которым относится GS. Это связано с тем, что ASCII 29 не предназначен для визуального представления. Поэтому при проверке содержимого отсканированной строки пользователь видит только видимые части данных, а разделители остаются скрыты.

Чтобы убедиться, что символ присутствует, можно воспользоваться отладочными средствами сканера или программами, показывающими коды символов. В конфигурации 1С также можно задать явный символ-разделитель, если устройство не передает GS напрямую.

Таким образом, правильное понимание роли GS и FNC1 помогает избежать ошибок при загрузке маркировочных данных и ускоряет процесс настройки оборудования для взаимодействия с 1С.

Почему сканер не передает символ GS

Символ GS — это управляющий невидимый символ, который используется внутри Data Matrix для разделения групп данных. В маркировке он появляется практически во всех кодах, где присутствуют несколько AI (например, GTIN + серийный номер). Проблема в том, что многие сканеры либо не передают GS по умолчанию, либо заменяют его другим символом, создавая путаницу в 1С.

Основные причины, почему GS «теряется» при сканировании:

  • Режим HID клавиатуры обрабатывает GS как невалидный управляющий символ и просто удаляет его.
  • На сканере отключена передача символов управления.
  • Производитель заменяет GS на Tab, Space или что-то еще, о чём пользователь даже не подозревает.
  • Сканер прошит упрощенной прошивкой, где GS не предусмотрен вовсе.

Наглядный пример: маркированный Data Matrix содержит GS, но при вводе в 1С попадает строка без разделителя. Итог — 1С не может понять, где заканчивается GTIN и начинается серийный номер, что приводит к ошибкам при приемке или списании.

Схема работы GS в коде

Режим клавиатуры HID и потеря скрытых символов

Большинство сканеров по умолчанию работают как HID-клавиатура — то есть «притворяются» обычной клавой. Это удобно, но есть нюанс: клавиатура не может передать управляющие символы вроде GS или RS. В результате все такие символы отбрасываются, и код превращается в обычную строку без структуры.

Поэтому в задачах, связанных с маркировкой, всегда предпочтителен режим USB-COM или CDC. В этом режиме сканер передает данные байт-в-байт, и никакие управляющие символы не исчезают.

Фактически разница выглядит так:

РежимКак передается GSЧто получает 1С
HID KeyboardУдаляется или заменяетсяСтрока без разделителей
USB-COM / CDCПередается как байт 0x1DКорректная структура данных

Если сканер работает в HID, а вы замечаете проблемы с приемкой или 1С «ругается» на формат кода, то первый шаг — перевести устройство в COM-режим и включить передачу GS. Это решает 80% проблем.

Как неверно настроен символ GS влияет на 1С

В 1С механизм распознавания маркировки основан на поиске структурных разделителей. Без GS платформа просто не понимает, где один блок данных заканчивается и начинается другой. Пример: вместо корректных «01… GS …21…» в 1С попадает строка «01…21…», и система интерпретирует ее как поврежденную.

Чаще всего это приводит к:

  • ошибке «Неверный формат кода маркировки»;
  • некорректному определению серийного номера или GTIN;
  • зависаниям при обработке групповых сканирований;
  • двойным и ложным срабатываниям при приемке.

Если 1С получает неправильный разделитель, например Tab вместо GS, то система тоже не сможет корректно разобрать код, потому что она ожидает конкретный управляющий символ 0x1D, а не любой другой.

Почему дешевые сканеры часто искажают Data Matrix

На рынке много бюджетных сканеров, рассчитанных на простые EAN‑13 или QR‑коды. В них производитель экономит на модуле декодирования, и работа с переменной длиной полей Data Matrix становится для устройства испытанием. Результат — сканер либо меняет структуру данных, либо не передает скрытые символы вовсе.

Типичные проблемы недорогих устройств:

  • замена GS на случайные ASCII‑символы;
  • обрезка части данных, особенно серийного номера;
  • нестабильное считывание маленьких Data Matrix;
  • зависимость результата от угла или расстояния сканирования.

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

Поэтому для стабильной работы с 1С и маркировкой лучше выбирать модели, которые гарантированно передают GS как 0x1D и поддерживают COM‑режим. Даже средний ценовой сегмент работает существенно надежнее ультрабюджетных сканеров.

Как настроить сканер и датаколлектор для маркировки

Переход в режим COM-порта для корректной передачи

Для стабильной работы сканера с 1С важно перевести устройство в режим эмуляции COM-порта (RS232). Именно в этом режиме сканер передает данные в понятной для драйвера и системы форме, что исключает искажения в символах GS или FNC1. Часто этот переход выполняется с помощью специальных сервисных штрихкодов, предусмотренных производителем.

После переключения режима необходимо убедиться, что драйвер устройства корректно определил виртуальный COM-порт, например, COM3 или COM5. Неправильное определение может привести к тому, что 1С просто не увидит сканер как источник данных.

  • Проверьте, чтобы скорость порта (baud rate) совпадала в настройках драйвера и сканера.
  • Не допускайте использования порта другими приложениями — это частая причина потери соединения.
  • После подключения рекомендуется протестировать передачу данных через стандартный терминал — если в нем символы отображаются корректно, можно переходить к настройке в 1С.

Сканер штрихкодов

Настройка символа GS сканера через сервисные коды

Символ GS (Group Separator) используется для разделения логических групп данных внутри одного Data Matrix, например, GTIN и серии. Чтобы 1С корректно понимала эти разделители, сканер должен отправлять GS в том виде, который система ожидает — чаще всего это управляющий символ с кодом 29 (ASCII). В противном случае 1С увидит вместо него посторонний символ, и разбор кода маркировки будет нарушен.

Настройка выполняется через сервисные штрихкоды в инструкции или меню сканера. Обычно существует возможность выбрать, как именно передавать GS и FNC1 — как управляющий символ, как текст «» или как комбинацию символов. Нужен первый вариант, чтобы строка в 1С парсилась автоматически.

Если устройство поддерживает конфигурацию через утилиту, проверьте, что:

ПараметрРекомендованное значениеЗачем важно
Transmission of GS CharacterSend as ASCII 291С сможет правильно разделить группы данных
FNC1 TransmissionAutomatic at first positionОбеспечивает корректное начало Data Matrix для формата GS1

Какие параметры проверить в 1С и драйвере оборудования

После настройки сканера важно убедиться, что 1С принимает данные в нужном формате. В разделе «Подключаемое оборудование» проверьте, чтобы устройство определялось как «Сканер штрихкодов (COM-порт)» и был выбран тот же номер порта, что в диспетчере устройств Windows.

Также стоит проверить:

  • Правильность кодировки данных (должен использоваться ASCII, а не UTF-8, во избежание трансформации управляющих символов).
  • Скорость обмена — при слишком высокой могут возникать пропуски символов.
  • Наличие в журнале передачи символа GS — он не должен быть видим как обычный текст, но должен учитываться при разборе структуры кода.

После всех проверок рекомендуется отсканировать тестовую маркировку и убедиться, что 1С корректно распознает обе части кода — GTIN и серийный номер, без дополнительных пробелов и видимых управляющих знаков. Это самый надежный способ подтвердить, что настройки выполнены правильно и оборудование готово к работе с системой маркировки.

Как проверить, что символ GS передается правильно

Почему Блокнот не подходит для тестирования

Многие пытаются проверить передачу управляющих символов, просто считав Data Matrix сканером в Блокнот. Кажется, что все работает — сканер выводит код, поля разделяются, но это иллюзия. Символ GS (Group Separator, ASCII 29) — это непечатаемый символ, и в обычном текстовом редакторе он никак не отображается. В результате вы не видите, есть ли он вообще в потоке данных.

Кроме того, Блокнот может интерпретировать управляющие символы по‑своему, особенно если у сканера включен режим эмуляции клавиатуры. Поэтому результат в Блокноте не отражает фактический состав данных, которые уходят в систему 1С или в API Честного ЗНАКа.

Какие утилиты и сервисы использовать для проверки

Чтобы удостовериться, что GS действительно передается, используйте инструменты, отображающие коды символов в явном виде. Это могут быть отдельные терминальные программы или онлайн‑анализаторы сканированных данных. Главное, чтобы в выводе отображались невидимые символы, например в виде управляющих кодов <GS> или [29].

Вот несколько подходов, которые практикуют специалисты по интеграции сканеров:

  • Терминальные утилиты — PuTTY, RealTerm или любая COM‑консоль, позволяющая видеть сырые данные от сканера в режиме эмуляции порта.
  • Онлайн‑парсеры штрихкодов — сервисы, которые показывают структуру Data Matrix и выделяют разделители.

В утилите RealTerm можно, например, включить просмотр в шестнадцатеричном формате. Если символ GS действительно присутствует, то вы увидите байт 1D между сегментами данных.

Как убедиться, что код готов для Честного ЗНАКа

Правильная структура Data Matrix для Честного ЗНАКа определяется стандартом GS1. Каждый блок данных должен разделяться символом GS, если следующий элемент имеет переменную длину. Чтобы убедиться, что код готов к передаче в систему, проверьте соответствие структуры и позицию разделителей.

Простейший способ — просканировать код и проанализировать последовательность данных в «сыром» виде. Далее сопоставьте сегменты с ожидаемыми полями: GTIN, серийный номер, дата, код проверки и т. д.

Сегмент данныхAI (идентификатор применения)Разделитель GS требуется
GTIN01Нет
Серийный номер21Да, если за ним следуют дополнительные данные
Код партии / срок годности10 / 17Да

Если символ GS передается корректно, 1С или любая другая учетная система будет правильно разделять поля при обработке маркированной продукции. Правильная передача GS — гарантия того, что ваши коды Data Matrix смогут быть корректно распознаны Честным ЗНАКом и не вызовут ошибок при приемке или отгрузке.

Вопросы и ответы

Что обозначает символ GS в Data Matrix и зачем он нужен?

Символ GS (Group Separator, ASCII 29) служит для разделения логических частей данных внутри кода Data Matrix. Он помогает системам, например 1С, корректно определить границы между полями, такими как GTIN и серийный номер.

Чем отличается GS от FNC1?

Символ GS используется для разделения групп данных, а FNC1 является служебным символом стандарта GS1, который сообщает системе о формате кода. FNC1 не отделяет данные, а обозначает начало структурированного кода.

Почему сканер может не передавать символ GS?

Основные причины связаны с режимом работы устройства. В режиме HID клавиатуры управляющие символы, включая GS, часто отбрасываются или заменяются другими знаками. Также на сканере может быть отключена передача управляющих символов.

Как включить передачу GS на сканере?

Передачу GS можно включить через сервисные штрихкоды или утилиту настройки. Необходимо выбрать вариант «Send as ASCII 29», чтобы устройство отправляло символ как управляющий код, понятный 1С.

Какой режим подключения выбрать для корректной передачи данных?

Рекомендуется использовать режим USB-COM (CDC) или эмуляцию COM-порта. В этом режиме данные передаются байт-в-байт, что исключает потерю управляющих символов, включая GS и FNC1.

Как проверить, что GS действительно присутствует в данных?

Для проверки используйте терминальные утилиты, такие как PuTTY или RealTerm, где можно видеть байты в шестнадцатеричном виде. Наличие GS подтверждается символом 1D между сегментами кода.

Почему Блокнот не подходит для тестирования GS?

Блокнот не отображает непечатаемые символы ASCII, включая GS, поэтому визуально невозможно определить, присутствует ли он в потоке данных. Следует использовать специализированные программы, показывающие управляющие коды.

Как неверная передача GS влияет на работу 1С?

Без GS 1С не распознает границы между элементами данных, что приводит к ошибкам импорта, неверному определению серий и отказу в обработке маркировки. Обязательно нужно, чтобы GS передавался как ASCII 29.

Можно ли заменить GS другим символом?

Технически возможно заменить GS на другой знак, например «\» или Tab, но это нарушит совместимость с 1С и стандартом GS1. Для корректной работы лучше использовать оригинальный управляющий символ ASCII 29.

Как убедиться, что код соответствует стандарту GS1?

Проверяется структура сегментов: после переменной длины поля обязательно должен стоять GS. Сравните свой код с таблицей идентификаторов применения AI в спецификации GS1, чтобы убедиться в корректной структуре.

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

Для корректной передачи GS и стабильной работы с Data Matrix рекомендуется выбирать профессиональные модели, поддерживающие COM-режим и передачу ASCII 29. Бюджетные сканеры часто искажают скрытые символы.

Статьи по схожей тематике