Работа с расширенными форматами штрихкодов, такими как GS1-128 (ранее известный как EAN-128), является важным этапом автоматизации склада. В отличие от привычного EAN-13, который содержит только код товара (GTIN), формат GS1-128 позволяет зашифровать в одной полоске данных сразу несколько параметров: код товара, номер партии, дату производства и срок годности. Рассмотрим подробно, как заставить 1С:Управление торговлей (УТ 11) правильно понимать эти данные и автоматически распределять их по нужным полям документов.
Прежде чем приступать к настройке программного обеспечения, проанализируем структуру самого кода. GS1-128 — это не просто набор цифр, а составная строка, разделенная идентификаторами применения (Application Identifiers, AI). Это двузначные или четырехзначные префиксы, заключенные (визуально на этикетке) в скобки, которые говорят системе, какие данные идут следом.
Наиболее часто используемые AI в торговле и производстве:
Проблема, с которой сталкиваются многие пользователи (как описано в сообщении 2), заключается в том, что сканер считывает код, но 1С воспринимает его как одну длинную непонятную строку. Выясним, как это исправить.
Для того чтобы система знала, куда записывать данные о сроке годности или партии, извлеченные из штрихкода, необходимо активировать функционал серий. Без включенных серий 1С просто некуда будет «складывать» расширенную информацию.
Разберем последовательность действий:
Одной из самых частых причин «необработки» штрихкода является неверный режим работы сканера (сообщение 4 и 15). Штрихкод GS1-128 использует невидимый служебный символ FNC1 в качестве разделителя между полями переменной длины (например, после номера партии, если за ним следует срок годности).
Если сканер работает в режиме эмуляции клавиатуры (HID), он часто игнорирует спецсимволы, и 1С получает «кашу» из цифр. Проанализируем рекомендации по настройке:
#GS или <GS> в строке, значит, сканер настроен верно и передает разделители.В современных релизах УТ 11 (начиная с 11.4) встроен мощный механизм разбора маркировки, который изначально создавался для системы «Честный ЗНАК» (DataMatrix), но он также прекрасно работает с GS1-128, так как стандарты формирования кодов идентичны.
Когда вы сканируете код в документе «Приобретение товаров и услуг», система выполняет следующий алгоритм:
Как отмечалось в сообщении 15, иногда требуется специфическая обработка, если ваши идентификаторы применения не являются стандартными. В таком случае программисту необходимо вмешаться в процесс обработки внешнего события от сканера.
Проанализируем пример кода, который можно использовать в расширении для парсинга строки GS1-128 вручную. Рассмотрим упрощенную функцию разбора:
Функция РазобратьGS1_128(Знач Штрихкод) Экспорт
Результат = Новый Структура("GTIN, СрокГодности, Партия", "", Неопределено, "");
// Поиск GTIN (обычно начинается с 01)
Если Лев(Штрихкод, 2) = "01" Тогда
Результат.GTIN = Сред(Штрихкод, 3, 14);
ОстатокСтроки = Сред(Штрихкод, 17);
// Поиск срока годности (префикс 17)
Поз17 = Найти(ОстатокСтроки, "17");
Если Поз17 > 0 Тогда
СтрокаДаты = Сред(ОстатокСтроки, Поз17 + 2, 6); // Формат ГГММДД
Год = 2000 + Число(Лев(СтрокаДаты, 2));
Месяц = Число(Сред(СтрокаДаты, 3, 2));
День = Число(Прав(СтрокаДаты, 2));
Результат.СрокГодности = Дата(Год, Месяц, День);
КонецЕсли;
// Поиск партии (префикс 10)
Поз10 = Найти(ОстатокСтроки, "10");
Если Поз10 > 0 Тогда
Результат.Партия = Сред(ОстатокСтроки, Поз10 + 2);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Этот код демонстрирует логику выделения подстрок. В реальной системе 1С рекомендуется использовать методы программного интерфейса БПО, такие как МенеджерОборудованияКлиент.РазобратьШтрихкод(), которые уже учитывают особенности различных форматов.
Если ваша компания использует внутренние (не GS1) составные штрихкоды, в УТ 11 предусмотрен справочник Шаблоны штрихкодов. Здесь мы можем создать новый шаблон, указать его тип и с помощью визуального конструктора задать:
Это позволяет настроить работу с составными кодами без единой строчки кода, используя только типовой функционал Управление торговлей.
Для успешной реализации работы с EAN-128 в 1С выполним следующие действия:
Таким образом, задача из «сложной доработки» превращается в правильную последовательную настройку типовых механизмов системы. Использование GS1-128 значительно ускоряет приемку товаров, так как кладовщику достаточно одного сканирования вместо трех (товар, дата, партия).