Почему 1С:Розница 2.3 неправильно разбирает коды маркировки табака и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

При проверке поступления или продаже табачной продукции в программе 1С:Розница 2.3 пользователи часто сталкиваются с крайне неприятной проблемой. При сканировании кода маркировки (как с отдельной пачки, так и с целого блока сигарет) система выдает ошибку проверки, заявляя, что отсканирован неизвестный штрихкод, и пытается добавить его как новый товар. При детальном анализе считанной строки выясняется, что сканер передает некорректные данные: при чтении блока добавляются лишние круглые скобки, а при сканировании пачки в конец кода дописывается служебный текст вроде МРЦСтрокой или другие непредусмотренные символы.

В этой статье мы подробно разберем техническую суть этой проблемы, выясним, почему программа так странно искажает считанные данные, и пошагово рассмотрим несколько способов настройки оборудования и конфигурации «1С», которые помогут полностью решить эту проблему.

---

Техническая суть проблемы: почему в коде появляется «МРЦСтрокой»?

Для начала проанализируем структуру двумерного штрихкода GS1 DataMatrix, используемого для маркировки табачной продукции. Этот код состоит из нескольких групп данных, перед каждой из которых идет специальный идентификатор применения (AI):

В печатном (текстовом) представлении эти идентификаторы применения принято выделять круглыми скобками, например: (01)046... (21)... (8005).... Однако в самом штрихкоде DataMatrix на пачке никаких физических круглых скобок нет! Вместо них по стандарту GS1 для разделения полей переменной длины используется скрытый непечатный управляющий символ — GS (Group Separator, ASCII-символ 29).

Когда ваш 2D-сканер работает в самом простом и распространенном режиме эмуляции клавиатуры (USB HID), он передает считанные символы последовательно, как будто они быстро набираются на физической клавиатуре. Операционная система Windows воспринимает непечатный символ разделителя групп GS (ASCII 29) как управляющую команду и попросту срезает (игнорирует) его. Данные поступают в «1С» сплошным неразрывным потоком.

В результате алгоритм разбора штрихкода в «1С» теряет ориентиры. Программа не может определить, где заканчивается серийный номер и начинается блок МРЦ. Шаблон разбора внутри «1С» сбивается, и система вместо значения цены подставляет в конец распознанной строки имя внутренней переменной — текст МРЦСтрокой. Из-за этого модифицированный код маркировки не совпадает с кодом из накладной ЭДО или системы «Честный ЗНАК», и проверка завершается ошибкой.

Что касается лишних скобок при сканировании блоков, то здесь причина кроется в настройках самого сканера. В некоторых моделях по умолчанию включена опция «GS1-128 Emulation», которая принудительно вставляет скобки вокруг идентификаторов применения, что ломает логику парсинга native-драйвера «1С».

---

Вариант 1. Перевод сканера в режим эмуляции COM-порта (Самое надежное решение)

Рассмотрим самый правильный и рекомендуемый разработчиками «1С» и ЦРПТ способ решения проблемы — перевод сканера штрихкодов в режим работы **USB-to-COM**.

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

Выполним настройку по шагам:

  1. Возьмите руководство по настройке (мануал) к вашей модели 2D-сканера. Если бумажной инструкции нет, найдите ее электронную версию на официальном сайте производителя (Mertech, Honeywell, Zebra, VMC, Quickscan и т.д.).
  2. Найдите в руководстве раздел переключения интерфейсов и отсканируйте настроечный штрихкод «USB COM Emulation» (также может называться «Virtual COM Port» или «USB-OEM»). Сканер издаст звуковой сигнал и перезагрузится.
  3. Подключите сканер к компьютеру. Если вы используете операционную систему Windows 7 или более ранние версии, вам потребуется скачать и установить драйвер виртуального COM-порта с сайта производителя сканера. В Windows 10/11 стандартный драйвер обычно устанавливается автоматически.
  4. Откройте «Диспетчер устройств» в Windows, разверните ветку Порты (COM и LPT) и посмотрите, какой номер виртуального COM-порта (например, COM3 или COM5) присвоен вашему сканеру.
  5. Запустите программу «1С:Розница» с правами администратора.
  6. Перейдите в раздел Администрирование — Подключаемое оборудование.
  7. Откройте карточку вашего сканера штрихкодов и нажмите кнопку Настроить.
  8. В поле Порт выберите из выпадающего списка номер COM-порта, который мы определили в Диспетчере устройств.
  9. В поле Драйвер оборудования убедитесь, что выбран современный сертифицированный драйвер — «1С:Сканер штрихкода (NativeApi)».
  10. Нажмите кнопку Тест подключения и отсканируйте марку сигарет. В окне теста вы должны увидеть считанную строку, в которой разделители групп будут отображаться в виде спецсимволов (например, стрелочек или символов <GS>). Если тест прошел успешно, сохраните настройки.

---

Вариант 2. Настройка передачи разделителя GS в режиме клавиатуры

Выясним, как поступить, если перевести сканер в COM-режим по какой-то причине невозможно (например, сканер используется параллельно в других старых программах, не поддерживающих виртуальные порты, или рабочее место развернуто в терминальном сессионном режиме RDP, где проброс портов затруднен).

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

Способ А. Эмуляция Alt-кодов (подходит для большинства современных сканеров):

В руководстве по программированию вашего сканера найдите опцию эмуляции ввода управляющих символов через Alt-последовательности (может называться «Enable Alt-Mode», «Alt-Key Code Emulation» или «GS replacement with Alt+0029»). При сканировании марки прибор вместо отправки «голого» символа ASCII 29 сымитирует зажатие клавиши Alt и последовательный набор цифр 0, 0, 2, 9 на цифровой клавиатуре. Windows успешно обработает это нажатие, и «1С» получит разделитель в полном объеме.

Способ Б. Замена символа GS на печатный знак:

  1. Найдите в сервисной инструкции к сканеру раздел замены символов (Character Substitution / Data Formatting).
  2. Настройте правило: заменить символ с кодом ASCII 29 (разделитель GS) на любой редкий печатный символ, который гарантированно не встречается в теле кода маркировки (например, решетку # или вертикальную черту |).
  3. В программе «1С:Розница» зайдите в настройки драйвера сканера штрихкода (NativeApi).
  4. Найдите параметр Символ-разделитель GS1 (или аналогичное поле настройки префиксов/суффиксов разделителя) и введите туда этот же назначенный символ (например, #). Теперь «1С» будет знать, что вместо стандартного невидимого разделителя нужно ориентироваться на этот знак.

---

Вариант 3. Отключение передачи скобок в настройках сканера

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

Для исправления этого поведения выполните следующие действия:

  1. Откройте сервисную инструкцию к вашему сканирующему устройству.
  2. Перейдите в раздел настроек символик семейства GS1 DataMatrix / GS1-128.
  3. Найдите и последовательно отсканируйте штрихкоды со следующими названиями (в зависимости от производителя формулировка может слегка отличаться):
    • «Disable GS1-128 Emulation» (Отключить эмуляцию GS1-128);
    • «Don't Transmit Brackets» / «Disable AI Brackets» (Не передавать скобки идентификаторов применения);
    • «Transmit Raw Data» (Передавать только «сырые» данные кода).
  4. После считывания этих кодов выполните тестовое сканирование блока в любой текстовый редактор (например, Блокнот). Скобки вокруг цифр 01 и 21 должны исчезнуть.

---

Вариант 4. Обходные настройки и обновление «1С»

Если оборудование настроено верно, но программа все равно сбоит при проверке МРЦ на этапе приемки документов, рассмотрим временные административные меры контроля и необходимость обновления программных компонентов.

Отключение избыточного контроля кодов маркировки в настройках интеграции:

В периоды массового изменения форматов маркировки (например, при переходе на новые ФФД или изменениях на стороне Честного Знака) разработчики 1С рекомендуют временно снижать строгость проверок, чтобы не блокировать торговые процессы на розничных точках.

  1. Перейдите в меню Администрирование — Настройки интеграции с ИС МП.
  2. Найдите блок настроек, отвечающий за контроль статусов маркировки.
  3. Временно снимите флажки (или установите значение «Не проверять») для опций:
    • Контролировать статусы кодов маркировки;
    • Выполнять проверку при розничной продаже.
  4. Это позволит вам принять накладные ЭДО без детальной проверки каждой марки, а также беспрепятственно пробивать сигареты на кассе ККМ. При этом данные о продаже будут корректно отправляться через ОФД напрямую в систему «Честный ЗНАК» для вывода из оборота.

Обновление конфигурации и драйверов:

Проблема некорректной обработки МРЦ на стыке конфигурации «1С:Розница 2.3» и БСП (Библиотеки стандартных подсистем) активно решалась разработчиками в различных релизах программ. Если вы используете устаревшую версию программы, настоятельно рекомендуется:

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

← На главную