Перейти к основному содержимому
Версия: 3.4

Шаблоны штрихкодов коробок, контейнеров и палет

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

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

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

Преимущества использования шаблонов​

Шаблоны упрощают процесс внедрения:

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

Если появятся новые варианты штрихкодов контейнеров, то достаточно будет добавить всего один новый шаблон, не внося никаких изменений в алгоритм программы (разбор штрихкода и т. п.).

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

Правильно составленный шаблон «вытащит» эту информацию из штрихкода и занесёт её в нужные поля.

Недостатки работы без шаблонов​

Конечно, без шаблонов можно обойтись.

В этом случае придётся сделать несколько дополнительных действий:

  • завести дополнительную таблицу (справочник контейнеров и палет);
  • выгружать в Mobile SMARTS все существующие штрихкоды контейнеров и палет, а также дополнительную информацию;
  • написать алгоритм разбора штрихкода и поиска контейнера или палеты в таблице (справочнике).

Недостатки при использовании:

  • данные в дополнительной таблице придётся поддерживать в актуальном состоянии;
  • во время работы таблица занимает место в оперативной памяти ТСД;
  • запрос в таблицу работает медленнее, чем сравнение штрихкода с шаблоном;
  • появление нового типа штрихкода может привести к пересмотру структуры выгружаемых данных и правке алгоритма с последующей отладкой и правкой багов.

Целая куча работы! Наш выбор — добавление шаблонов штрихкодов контейнеров.

Для того, чтобы добавить новый шаблон ШК или внести изменения в старый, необходимо открыть панель управления используемой базы, раздел «Штрихкоды контейнеров».

панель управления

Добавление шаблонов контейнеров и палет​

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

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

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

Для добавления шаблона контейнера необходимо в дереве элементов выделить «Штрихкоды контейнеров», в который нужно добавить контейнер (правой кнопкой мыши), нажать кнопку «Добавить» и ввести шаблон.

панель управления

Шаблон контейнера задается примерно такого вида: «контейнером считается любой штрихкод, который начинается с цифр «98» и дальше любые 6 символов».

панель управления

Пример шаблона штрихкода контейнера 98{номер:6} — данные штрихкоды начинаются с цифр 98, а далее содержатся еще 6 цифр порядкового номера.

Примеры шаблонов штрихкодов​

Для добавления контейнеров и палет в конфигурацию Mobile SMARTS удобно использовать шаблоны.

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

Это упрощает процесс, нам не требуется заводить вручную сотни контейнеров. Также это значительно уменьшает расход памяти на мобильном устройстве.

Введение​

Шаблоны штрихкодов контейнеров задаются примерно так:

20{параметр1:количество символов}А{параметр2:@регулярное выражение}11

20, А, 11 — постоянные части штрихкода (можно указывать не только цифры, но и буквы), одинаковые для всех штрихкодов, подходящих под этот шаблон.

  • {...} — переменные части штрихкода (может быть любое количество), которые будут проанализированы по шаблону и вынуты из штрихкода в переменные.

  • параметр1, параметр2 — имя переменной, в которую попадет номер коробки, позиция, номер бочки, и т.д., вынутое из штрихкода.

  • количество символов — простой шаблон, длина переменной части штрихкода, которая попадет в переменную.

  • @регулярное выражение — сложный шаблон в виде регулярного выражения.

Пример 1 | Шаблон с одним параметром​

Заведено три шаблона:

  1. {НомерКоробки:8}

  2. {ИдПоддона:5}

  3. {Позиция:5}

Шаблоны в этом примере заведены без постоянных частей и без использования регулярных выражений.

Отсканированный (введенный вручную) штрихкод:

«32183»

Разбор по шаблону:

При вводе штрихкода контейнера «32183», будет производиться поиск подходящего шаблона:

шаг 1: {НомерКоробки:8} — длина не подходит, шаблон не подходит;

шаг 2: {ИдПоддона:5} — длина подходит, шаблон подходит, поиск завершён;

шаблон {Позиция:5} — даже не проверяется, потому что уже нашли совпадение по шаблону ИдПоддона, который в списке стоит выше.

Результат:

В данном примере был выбран контейнер по шаблону {ИдПоддона:5}, потому что отсканированный штрихкод имел длину 5 символов. Строка «32183» попала в сессию в объект SSCCPallet в следующие поля:

ПутьЗначениеТип значения
SSCCPallet.Barcode32183строка
SSCCPallet.ИдПоддона32183строка

Пример 2 | Шаблон с постоянной частью и несколькими параметрами​

Заведено три шаблона:

  1. 20{Позиция:3}{Номер:3}

  2. КС{Паллета:3}{Номер:3}

  3. КС{Бочка:4}{Номер:3}

В этом примере все шаблоны имеют постоянную часть и два параметра с указанием количества символов, которые будут занесены в соответствующее поле объекта SSCCPallet при успешном выборе шаблона.

Отсканированный (введенный вручную) штрихкод:

«КС321965»

Разбор по шаблону:

При вводе штрихкода «КС321965» будет производиться поиск подходящего шаблона:

шаг 1: 20{Позиция:3}{Номер:3} — шаблон не подходит, т.к. не совпадает постоянная часть;

шаг 2: КС{Паллета:3}{Номер:3} — шаблон подходит, совпадает постоянная часть и количество символов в штрихкоде, поиск завершён;

шаблон КС{Бочка:4}{Номер:3} даже не проверяется, т.к. подходящий шаблон уже найден в списке выше.

Результат:

В данном примере был выбран контейнер по шаблону КС{Паллета:3}{Номер:3}, потому что отсканированный штрихкод имеет длину 8 символов и начинается с «КС». Строка «КС321965» попала в сессию в объект SSCCPallet в следующие поля:

ПутьЗначениеТип значения
SSCCPallet.BarcodeКС321965строка
SSCCPallet.Паллета321строка
SSCCPallet.Номер965строка

Пример 3 | Контейнер не найден по шаблону​

Заведено три шаблона:

  1. КС{Паллета:3}{Номер:3}

  2. КС{Бочка:4}{Номер:3}

  3. 20{Ящик:3}{Номер:4}

В этом примере все шаблоны имеют постоянную часть и два параметра с указанием количества символов, которые будут занесены в соответствующие поля объекта SSCCPallet при успешном выборе шаблона.

Отсканированный (введенный вручную) штрихкод:

Штрихкод: «2032196546»

Разбор по шаблону:

При вводе штрихкода «2032196546» будет производиться поиск подходящего шаблона:

шаг 1: КС{Паллета:3}{Номер:3} — шаблон не подходит, не совпадает постоянная часть;

шаг 2: КС{Бочка:4}{Номер:3} — шаблон не подходит, не совпадает постоянная часть;

шаг 3: 20{Ящик:3}{Номер:4} — шаблон не подходит, не совпадает суммарное количество символов в штрихкоде

Результат:

В данном примере к введенному штрихкоду не подходит ни один из заведённых шаблонов контейнеров, контейнер не будет найден.

Пример 4 | Выбор шаблона из нескольких подходящих​

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

Заведено четыре шаблона:

  1. 20{Позиция:3}{Номер:3}

  2. КС{Паллета:3}{Объем:4}

  3. КС{Бочка:4}{Вес:3}

  4. 20{Ящик:3}{Номер:4}

Все эти шаблоны имеют постоянную часть и два параметра с указанием количества символов, которые будут занесены в соответствующие поля объекта SSCCPallet при успешном выборе шаблона.

Отсканированный (введенный вручную) штрихкод:

«КС3219652»

Разбор по шаблону:

При вводе штрихкода «КС3219652», будет производиться поиск подходящего шаблона:

шаг 1: 20{Позиция:3}{Номер:3} — шаблон не подходит, не совпадает постоянная часть и количество символов в параметре;

шаг 2: КС{Палета:3}{Объем:4} — шаблон подходит;

шаблон КС{Бочка:4}{Вес:3} не проверяется, т.к. подходящий шаблон уже найден в списке выше;

шаблон 20{Ящик:3}{Номер:4} не проверяется, т.к. подходящий шаблон уже найден в списке выше.

Результат:

В данном примере к введённому штрихкоду подходят несколько шаблонов. Будет выбран шаблон КС{Палета:3}{Объем:4}, т.к. он был первым подошедшим шаблоном. Строка «КС3219652» попала в сессию в объект SSCCPallet в следующие поля:

ПутьЗначениеТип значения
SSCCPallet.BarcodeКС3219652строка
SSCCPallet.Палета321строка
SSCCPallet.Объем9652строка

Если к штрихкоду подходят несколько шаблонов, то из них выбирается тот, который находится в списке первым.

EAN-128 для штрихкодов контейнеров и палет​

Для маркировки коробок и палет часто используется штрихкод EAN-128 (GS1-128). Mobile SMARTS поддерживает использование любой транспортной упаковки, маркированной такими штрихкодами, в качестве единицы хранения товара.

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

В рамках этих шаблонов сделана поддержка штрихкодов EAN-128, которая позволяет без лишнего программирования получить нужный результат.

Использование параметров и полей шаблона позволяет держать алгоритмы разбора штрихкодов отдельно от основной программы.

Пример доработки готового шаблона​

Допустим, в компанию поступили коробки, в которых значимые части расставлены не в том порядке, в котором рассчитывали ранее. Или, что еще хуже, для получения информации недостаточно просто вырезать часть штрихкода, а необходимо выполнять вычисления.

Вместо того, чтобы искать все места программы, в которых происходит работа со штрихкодами коробок и вставлять туда код по типу «Если первый символ штрихкода = 1 тогда» (а это будут такие операции, как приемка, пересчет, подбор заказов, отгрузка, переупаковка и т.п.), в Mobile SMARTS достаточно добавить новый шаблон штрихкода, в котором будут происходить все проверки и вычисления.

Как это работает в общем виде:

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

  2. Если найден шаблон, под который подходит какая-то часть штрихкода или весь штрихкод целиком, то сначала строка штрихкода разбирается по шаблону, как это описано в статье про примеры шаблонов штрихкодов контейнеров и палет. Найденные параметры (переменные части штрихкода) переносятся в объект {SSCCPallet}.

  3. Далее Mobile SMARTS проверяет, подходит ли отсканированный ШК под формат GS1-128 (имеется в виду именно содержимое штрихкода, сам ШК при этом может быть любой кодировки (EAN-128, CODE-39, DataMatrix, QR и т.п.)

  4. Если оказалось, что отсканированный штрихкод подходит под формат GS1-128, то Mobile SMARTS пробегается по тем полям шаблона штрихкода, у которых заполнено свойство EanAI, и переносит в {SSCCPallet} куски штрихкода, являющиеся значениями AI кодов применения) с указанными номерами.

Разбор частного примера шаблона:

(00){Расширение:1}{Ост:17}

В этом шаблоне первые две цифры в скобках (00) определяют AI (код применения) 00, т.е. код палеты SSCC. Далее идут два параметра на 1 и 17 знаков длиной (любые знаки, хоть пробелы). SSCC должен быть 18 цифр, и суммарная длина параметров 1+17=18.

Под такой шаблон подойдет штрихкод «(00)012345678901234567», но не подойдет штрихкод «(00)012345678901234567(21)abba», потому что он длиннее на группу (21).

Далее добавим в шаблон новое поле «КодКонтейнера» (это будет именно поле, а не параметр шаблона):

панель управления

И укажем у него, что оно должно маппиться на код применения AI 00. Теперь этот шаблон сработает только в том случае, если после (00) идут именно 18 цифр (буквы в данном случае запрещены).

Этот шаблон подойдет, даже если кроме (00) в сканируемом штрихкоде будут еще и другие AI (цифры в скобках). Это сделано для того, чтобы не заводить по отдельному шаблону на каждый штрихкод формата EAN-128. Например, штрихкод «(00)012345678901234567(21)abba» также подойдет под этот шаблон.

{Расширение:1} позволяет определить, на какую цифру начинался штрихкод контейнера. В частности, можно определить что было отсканировано: коробка или палета по правилам GS1.

Для это необходимо добавить еще 2 вычислимых поля:

панель управления

Значения полей «ЭтоПалета» и «ЭтоКоробка» вычисляются на основе того, чему равен параметр «Расширение», куда попадает первая цифра из кода контейнера в группе (00).

Этот момент следует учитывать при копировании и изменении чужого готового шаблона. Если в самостоятельно написанном шаблоне не будет вычислимого поля «ЭтоКоробка» или оно будет считаться неправильно, при сканировании штрихкода, подпадающего под ваш шаблон, в складских операциях в программе может не сработать логика, которая была завязана программистом конкретной конфигурации Mobile SMARTS на значения таких полей.

Если необходимо, чтоб из штрихкодов GS1-128 вынимались не только группы (00), как было указано в шаблоне, то будет достаточно добавить в шаблон нужные поля и указать у них EanAI:

панель управления

Если что-то осталось непонятным по механизмам работы шаблонов из данной статьи — оставляйте в техническую поддержку «Клеверенс» запрос на написание новой или дополнение текущей документации.