Для маркировки коробок и палет часто используется штрихкод EAN-128 (GS1-128). Mobile SMARTS поддерживает использование любой транспортной упаковки, маркированной такими штрихкодами, в качестве единицы хранения товара.
В Mobile SMARTS используются шаблоны штрихкодов транспортных упаковок, которые позволяют пользователю добавлять новые варианты маркировки контейнеров совершенно любых форматов без переписывания основной программы. Благодаря этому на программном уровне все операции с новыми упаковками будут работать правильно без дополнительных доработок алгоритмов.
В рамках этих шаблонов сделана поддержка штрихкодов EAN-128, которая позволяет без лишнего программирования получить нужный результат.
Использование параметров и полей шаблона позволяет держать алгоритмы разбора штрихкодов отдельно от основной программы.
Пример доработки готового шаблона штрихкода
Допустим, в компанию поступили коробки, в которых значимые части расставлены не в том порядке, в котором рассчитывали ранее. Или, что еще хуже, для получения информации недостаточно просто вырезать часть штрихкода, а необходимо выполнять вычисления.
Вместо того, чтобы искать все места программы, в которых происходит работа со штрихкодами коробок и вставлять туда код по типу «Если первый символ штрихкода = 1 тогда» (а это будут такие операции, как приемка, пересчет, подбор заказов, отгрузка, переупаковка и т.п.), в Mobile SMARTS достаточно добавить новый шаблон штрихкода, в котором будут происходить все проверки и вычисления.
Как это работает в общем виде:
-
Mobile SMARTS проверяет, подходит ли хотя бы часть отсканированного штрихкода целиком под один из заведенных в системе шаблонов штрихкода. Шаблоны проверяются в том порядке, в котором они указаны в списке «Штрихкоды контейнеров» в панели управления.
-
Если найден шаблон, под который подходит какая-то часть штрихкода или весь штрихкод целиком, то сначала строка штрихкода разбирается по шаблону, как это описано в статье про примеры шаблонов штрихкодов контейнеров и палет. Найденные параметры (переменные части штрихкода) переносятся в объект {SSCCPallet}.
-
Далее Mobile SMARTS проверяет, подходит ли отсканированный ШК под формат GS1-128 (имеется в виду именно содержимое штрихкода, сам ШК при этом может быть любой кодировки (EAN-128, CODE-39, DataMatrix, QR и т.п.)
-
Если оказалось, что отсканированный штрихкод подходит под формат GS1-128, то Mobile SMARTS пробегается по тем полям шаблона штрихкода, у которых заполнено свойство EanAI, и переносит в {SSCCPallet} куски штрихкода, являющиеся значениями AI кодов применения) с указанными номерами.
Разбор частного примера шаблона:
(00){Расширение:1} {Ост:17}
В этом шаблоне первые две цифры в скобках (00) определяют AI (код применения) 00, т.е. код палеты SSCC. Далее идут два параметра на 1 и 17 знаков длиной (любые знаки, хоть пробелы). SSCC должен быть 18 цифр (см. код палеты SSCC), и суммарная длина параметров 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:
Если что-то осталось непонятным по механизмам работы шаблонов из данной статьи — оставляйте в техническую поддержку «Клеверенс» запрос на написание новой или дополнение текущей документации.