Как настроить считывание весовых штрихкодов разных форматов в 1С:Управление торговлей 11?

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

Работа с весовым товаром в 1С:Управление торговлей 11 часто подкидывает сложные задачи, особенно когда поставщики используют разные стандарты маркировки. Типичная ситуация: для одной группы товаров вес зашит после 7-го символа, а для другой — после 13-го. В этой статье мы подробно разберем, как «научить» систему распознавать такие коды, настроим префиксы и рассмотрим варианты программной доработки для нестандартных случаев.

Понимание структуры весового штрихкода

Прежде всего, проанализируем структуру стандартного весового штрихкода формата EAN-13. Как правило, он строится по шаблону 2NPPPPPPMMMMZ, где:

Однако на практике поставщики могут присылать товар с длинными кодами (например, Code-128 или GS1-128), где вес может находиться в середине или в конце строки. Рассмотрим, как с этим работать.

Решение 1: Настройка префиксов внутренних штрихкодов (стандартный функционал)

Если ваши «мясные» штрихкоды соответствуют стандарту EAN-13 и начинаются с цифры 2, мы можем использовать типовой механизм 1С. Выполним следующие шаги в интерфейсе «Такси»:

  1. Перейдем в раздел НСИ и администрирование.
  2. В блоке «Настройка параметров системы» выберем пункт Номенклатура.
  3. Развернем раздел «Настройки создания» и перейдем по гиперссылке Настройка префиксов внутренних штрихкодов EAN13.
  4. Проверим заполнение таблицы. Здесь мы указываем, какие цифры в начале кода система должна интерпретировать как весовой признак.

Разберем пример: если мы завели товар с кодом 91152 и настроили префикс веса, то при сканировании кода 2291152050779 система автоматически определит:

Решение 2: Программный разбор штрихкода (Custom Logic)

Когда стандартных настроек недостаточно (например, если вес идет после 13-го знака или код слишком длинный), нам потребуется вмешаться в программный код обработки события сканирования. В 1С:УТ 11 за это часто отвечает функционал в модулях, связанных с Библиотекой подключаемого оборудования (БПО).

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


// Пример логики разбора весового штрихкода
Штрихкод = "0120105021715000"; // Пример длинного кода
Если СтрДлина(Штрихкод) > 13 Тогда
    // Предполагаем, что это "курица"
    // Код товара (первые 5 знаков)
    КодТовара = Лев(Штрихкод, 5); 
    // Вес товара (с 12 по 16 знак, 5 цифр)
    СтрокаВеса = Сред(Штрихкод, 12, 5);
    Вес = Число(СтрокаВеса) / 1000; // перевод в кг
ИначеЕсли Лев(Штрихкод, 1) = "2" Тогда
    // Стандартный весовой EAN-13 (мясо)
    КодТовара = Сред(Штрихкод, 3, 5);
    СтрокаВеса = Сред(Штрихкод, 8, 5);
    Вес = Число(СтрокаВеса) / 1000;
КонецЕсли;

Эту логику необходимо интегрировать в процедуру обработки внешнего события от сканера штрихкодов. В УТ 11.2 это часто делается в модуле МенеджерОборудованияКлиент или в специализированных обработках обслуживания (например, СерверТО).

Решение 3: Настройка Терминала Сбора Данных (ТСД)

Если вы планируете использовать ТСД с программным обеспечением (например, Mobile Smarts от Клеверенс или DataMobile), задачу по разделению штрихкода лучше перенести на сторону мобильного устройства. Выясним причину, почему это эффективно: ТСД может обработать строку «на лету» и передать в 1С уже готовый объект с разделенными полями (Номенклатура и Количество).

В настройках ПО ТСД создаются шаблоны штрихкодов:

  1. Создаем шаблон «Весовой Мясо» для маски 22XXXXXMMMMMZ.
  2. Создаем шаблон «Весовой Курица» для более длинной строки, указав смещение (offset) для веса.
  3. Указываем разделители и идентификаторы применения (AI), если используется стандарт GS1-128.

Использование идентификаторов применения (AI) в длинных кодах

Рассмотрим подробнее ситуацию с длинными «куриными» кодами. Скорее всего, они соответствуют стандарту GS1-128. В таких кодах используются специальные префиксы — идентификаторы применения:

Если ваш поставщик присылает штрихкод вида 01XXXXXXXXXXXXXX3103015000, то 3103 подсказывает системе, что следующие 6 цифр — это вес. Использование регулярных выражений (RegExp) в 1С позволит вам создать универсальный парсер, который будет искать эти вхождения независимо от общей длины строки.

Практические рекомендации по внедрению

Чтобы система работала стабильно, придерживайтесь следующего плана действий:

Шаг 1: Сбор образцов. Получите от поставщиков распечатки всех вариантов штрихкодов. Важно понимать не только где вес, но и как кодируется сам товар (артикул, код или штрихкод упаковки).

Шаг 2: Создание SKU. В карточке номенклатуры в 1С убедитесь, что код, указанный в штрихкоде (например, те самые 5-7 цифр), внесен в поле «Код» или используется как SKU в регистре штрихкодов. Если 1С не сможет найти товар по «обрезанному» коду, вес подтянуть не получится.

Шаг 3: Тестирование префиксов. Начните с настройки префиксов в НСИ и администрирование. Если большинство кодов начинаются на «2», это решит 80% задач без программирования.

Шаг 4: Доработка обработки «СерверТО». Если у вас старая версия УТ 11.2, обратитесь к программисту для модификации функции ОбработатьШтрихкоды. В ней нужно прописать условие: «Если длина строки равна X и начинается с Y — извлечь вес из позиции Z».

Таким образом, мы видим, что проблема решаема как стандартными средствами настройки префиксов, так и путем небольшой кастомизации логики разбора строки. Главное — четко определить правила, по которым каждый поставщик кодирует информацию в строке штрихкода.

← На главную