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

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

Часто при работе с маркированным товаром мы сталкиваемся с неочевидной проблемой: если в карточке номенклатуры указан штрихкод из 13 символов (EAN-13), то при сканировании кода маркировки (DataMatrix) товар успешно находится. Но если в карточку записать 14-значный код (GTIN), который мы видим в самой марке, система отказывается находить товар. Разберем по шагам, почему так происходит и как правильно настроить учетную систему.

Причина проблемы в типовых конфигурациях 1С

Для начала проанализируем структуру кода маркировки и стандарты GS1. На самом штучном товаре чаще всего напечатан стандартный штрихкод формата EAN-13 (13 цифр). Однако внутри кода DataMatrix (например, от «Честного ЗНАКа») зашит идентификатор применения (01), который всегда содержит GTIN длиной ровно 14 знаков. Чтобы 13-значный код превратился в 14-значный, система маркировки добавляет к нему ведущий ноль в качестве технического заполнителя.

Рассмотрим, как эту ситуацию обрабатывают типовые конфигурации 1С (через подсистемы «Библиотека интеграции ГосИС» и «Библиотека подключаемого оборудования»):

  1. При сканировании и разборе GS1 DataMatrix система извлекает значение идентификатора (01) — тот самый 14-значный GTIN.
  2. Включается жесткий алгоритм нормализации кодов. Специализированная функция, например ШтрихкодEANИзGTIN, проверяет извлеченный код. Если он имеет длину 14 символов и начинается с цифры 0, система понимает, что перед ней дополненный EAN-13, и принудительно отсекает ведущий ноль.
  3. В результате для поиска используется 13-значная строка.
  4. Далее 1С обращается к регистру сведений ШтрихкодыНоменклатуры и ищет строго полученное 13-значное значение.

Именно поэтому, если вы вручную или через загрузку добавили в карточку товара 14-значный код с лидирующим нулем, совпадение не находится — 1С ищет код без нуля. Полная 14-значная строка в параметры поискового запроса в этом случае просто не передается.

Ограничения и правильная методология хранения данных

Выясним причину, по которой запись 14-значного кода с нулем для штучного товара считается некорректной. По стандартам 14-значные штрихкоды (ITF-14) предназначены для групповых логистических упаковок (коробок, паллет). У таких кодов первая цифра обозначает логистический уровень упаковки (от 1 до 8), но никогда не бывает нулем. Если первая цифра — ноль, это просто штучный EAN-13, искусственно растянутый до 14 знаков.

Следовательно, записывать в карточку номенклатуры 14-значный код с нулем в начале методологически неверно. Для штучного товара в регистре должен храниться чистый EAN-13.

Проверенные способы решения проблемы

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

  1. Нормализация записей в регистре. Если у вас в базе уже накопились некорректные штрихкоды для штучной продукции (длиной 14 знаков и начинающиеся на «0»), их необходимо преобразовать. С помощью разовой групповой обработки данных обойдите регистр ШтрихкодыНоменклатуры и удалите лидирующий ноль у таких записей, приведя их к длине в 13 знаков.
  2. Контроль при вводе данных. Чтобы предотвратить появление таких кодов в будущем, добавим программный контроль. Через расширение конфигурации создадим подписку на событие ПередЗаписью для регистра ШтрихкодыНоменклатуры. В обработчике пропишем простую логику: если длина сохраняемого штрихкода равна 14 и первый символ — это ноль, автоматически усекаем код до 13 символов с помощью функции Сред(Штрихкод, 2).
  3. Штатная привязка через интерфейс проверки. Воспользуемся стандартными механизмами 1С. Если вы отсканируете марку с нераспознанным товаром в форме «Проверка и подбор маркируемой продукции», система предложит сопоставить ее с номенклатурой вручную. При таком ручном выборе 1С сама создаст запись в регистре сведений в правильном 13-значном формате.
  4. Привязка через упаковки. Если мы имеем дело с настоящим 14-значным кодом (например, ITF-14), который принадлежит групповой таре (коробке), его категорически не нужно привязывать к самому товару как штучный штрихкод. Его следует прикрепить к соответствующей единице в справочнике «Упаковки номенклатуры». Тогда при сканировании марки коробки система корректно определит товар и применит нужный коэффициент пересчета.

Таким образом, разобравшись в алгоритмах нормализации, мы видим, что типовое поведение 1С полностью оправдано и соответствует стандартам кодирования. Главное правило при работе с маркировкой штучного товара — хранить в справочниках и регистрах 1С только базовые коды EAN-13 без технических нулей.

← На главную