Почему 1С:УТ 11 не находит маркированный товар при сканировании DataMatrix и как это исправить?

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

При работе с маркированной продукцией (обувь, одежда, парфюмерия и др.) в программе 1С:Управление торговлей 11 пользователи часто сталкиваются с ситуацией: при сканировании кода DataMatrix программа либо выдает ошибку «Штрихкод не найден», либо считывает слишком длинную строку, которую невозможно сопоставить с базой. Давайте разберем, почему это происходит и как правильно настроить оборудование и программу для корректной идентификации товаров.

Суть проблемы: почему код оказывается «слишком длинным»?

Проанализируем структуру кода маркировки Честного Знака. Он состоит из нескольких функциональных частей, разделенных специальными тегами (Application Identifiers, AI):

  1. GTIN (01) — глобальный номер товарной продукции (14 символов).
  2. Серийный номер (21) — уникальный номер упаковки (13 символов).
  3. Криптохвост (91 и 92) — ключ и код проверки, которые необходимы для подтверждения подлинности марки в системе ГИС МТ (может быть очень длинным).

В базе 1С товар привязывается к «короткому» коду (обычно это GTIN + Серийный номер). Однако сканер при заводских настройках считывает всю строку целиком, включая огромный криптохвост. Если программа не понимает, где заканчивается серийный номер и начинается хвост, она пытается найти в справочнике Штрихкоды упаковок и товаров всю строку целиком. Естественно, такого соответствия в базе нет.

Разберем причину №1: Отсутствие символа-разделителя GS

Согласно стандарту GS1 DataMatrix, части кода с переменной длиной (например, серийный номер после тега 21) должны отделяться от следующей части специальным невидимым символом — GS (Group Separator), имеющим код ASCII 29.

Если сканер работает в режиме эмуляции клавиатуры (HID), он часто просто игнорирует этот символ или заменяет его на пробел. Без этого разделителя 1С не может «разрезать» считанную строку на смысловые части. Программа видит монолитный текст и не понимает, что 91802992... — это уже не часть серийного номера, а служебная информация. Для устранения этой проблемы при работе сканера в режиме клавиатуры пригодится статья с разбором устранения потери символа GS.

Разберем причину №2: Режим работы сканера (HID против COM)

Большинство современных сканеров поставляются в режиме «клавиатуры». Это удобно для простых EAN-13, но губительно для маркировки. Рассмотрим, почему это так:

Пошаговое решение проблемы

Для того чтобы 1С начала корректно «узнавать» марки, выполним следующие действия:

Шаг 1. Перевод сканера в режим эмуляции COM-порта

Найдите инструкцию к вашему сканеру и считайте управляющий штрихкод для включения режима USB-COM или USB Serial Emulation. После этого в диспетчере устройств Windows в разделе «Порты (COM и LPT)» должно появиться новое устройство (например, Virtual COM Port).

Шаг 2. Настройка в 1С:Управление торговлей

Перейдем в раздел НСИ и администрирование -> Администрирование -> РМК и оборудование -> Подключаемое оборудование.

  1. Выберите ваш сканер и нажмите «Настроить».
  2. В поле «Порт» укажите тот номер COM-порта, который появился в диспетчере устройств.
  3. В качестве драйвера рекомендуется использовать 1С:Сканеры штрихкода (NativeApi).
  4. Обязательно проверьте настройки префиксов и суффиксов. Для корректного завершения ввода данных в 1С обычно используется суффикс CR (код 13).

Шаг 3. Проверка передачи символа GS

Воспользуйтесь встроенным тестом в настройках оборудования 1С. При сканировании в окне теста вы должны увидеть не просто строку, а структурированные данные. Если в строке вместо символа разделителя отображается пустой квадрат или символ #29, значит, сканер настроен верно.

Анализируем ситуацию: что если ничего не помогло?

Если даже в режиме COM-порта 1С продолжает считывать полную строку, выясним причину в самом коде маркировки. Иногда поставщики печатают код как обычный DataMatrix вместо GS1 DataMatrix. Разница в том, что в начале правильного кода должен стоять спецсимвол FNC1. Если его нет, 1С не включит алгоритм разбора GS1. Для исправления таких кодов маркировки можно использовать обработку для добавления невидимых символов GS в код маркировки.

Проверить это можно простым кодом на встроенном языке (для программистов), чтобы посмотреть, что именно приходит от сканера в процедуру обработки внешнего события:


// Пример анализа входных данных в модуле формы
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    // Данные — это считанный штрихкод
    Сообщить("Считано символов: " + СтрДлина(Данные));
    Сообщить("Сырые данные: " + Данные);
    
    // Попробуем найти символ GS вручную
    Если Найти(Данные, Символ(29)) > 0 Тогда
        Сообщить("Разделитель GS найден на позиции: " + Найти(Данные, Символ(29)));
    Иначе
        Сообщить("Внимание: Разделитель GS отсутствует!");
    КонецЕсли;
КонецПроцедуры

Как правильно сканировать в интерфейсе 1С?

Важно помнить, что в 1С:УТ 11 поиск маркированного товара через обычное поле «Поиск по штрихкоду» (куда вводятся EAN-13) может работать нестабильно. Рассмотрим правильный алгоритм действий пользователя:

  1. Откройте документ (например, Реализация товаров и услуг или Приобретение товаров и услуг).
  2. Перейдите в специализированную форму Проверка и подбор продукции (обычно открывается по ссылке «Проверить и подобрать»).
  3. Сканируйте коды именно в этом окне. Здесь система задействует специализированные механизмы БПО, которые «знают», как отрезать криптохвост и как сопоставить GTIN из марки с товаром в вашей базе.

Рекомендация по «коротким» кодам

Если вы видите в Честном Знаке короткий код, а сканер выдает длинный — это нормально. Криптохвост не хранится в вашей базе «навечно», он нужен только в момент проверки и выбытия марки. Задача настройки оборудования — научить 1С отделять «зерна» (идентификатор товара) от «плевел» (технической подписи).

Резюмируем: для исправления ошибки «лишних символов» не нужно писать расширения для обрезки строки. Нужно обеспечить передачу символа GS через режим COM-эмуляции и использовать актуальные версии драйверов 1С. Это позволит встроенным механизмам конфигурации самостоятельно и корректно обрабатывать любые коды маркировки.

← На главную