Практический сценарий производства
От MES до готовой этикетки: GS1 DataMatrix на производстве электротехнических изделий
Пошагово соберём процесс для упаковочной линии: от входящего REST-задания и SQL-справочника до готовой этикетки, маршрута и подтверждённого задания печати.
На упаковочной линии данные для этикетки редко находятся в одной системе. MES знает производственный заказ, партию, дату и состояние упаковки, а наименование и постоянный идентификатор изделия предприятие хранит в SQL-справочнике. Перед печатью эти данные нужно соединить, проверить и привести к структуре, которую ожидает GS1 DataMatrix.
В этом практическом примере раздел «Сценарии подготовки данных» AxioLabel Профессионального принимает REST-задание от MES, оставляет только готовые к печати записи, дополняет их сведениями из SQL и формирует итоговое поле Gs1Value. Затем маршрут связывает опубликованный сценарий с макетом и принтером.
Производственная задача
Рассмотрим участок предприятия, выпускающего электротехнические изделия. После упаковки условного «Клеммного модуля AX-40» MES передаёт задание на этикетку. Пример не связан с реальным товаром, номенклатурой заказчика или системой обязательной маркировки.
В сообщении MES находятся оперативные сведения:
- номер производственного заказа;
- артикул изделия;
- номер партии;
- дата производства;
- код упаковочной линии;
- состояние готовности к печати.
SQL-справочник возвращает постоянные сведения: идентификатор изделия, название, категорию и количество в упаковке. Сценарий объединяет оба набора по артикулу, готовит дату для AI (11) и собирает строку GS1.
Что получится в конце
- MES отправляет JSON в REST-коннектор
mes-label-ax40. - Активный маршрут запускает опубликованный сценарий.
- Сценарий фильтрует записи и выполняет
INNER JOINсо справочником SQL. - Дата преобразуется в формат
YYMMDD. - Узел «GS1-строка» формирует поле
Gs1Value. - Маршрут применяет макет «Электротехнические изделия — GS1».
- Готовое задание поступает в надёжную очередь печати.
Рисунок 1. Опубликованный сценарий версии 2: REST-вход, фильтр, SQL-обогащение, вычисляемая дата, GS1-строка и результат.
Что подготовить
- тестовый REST-коннектор для сообщений MES;
- SQL-коннектор со справочником продукции;
- синтетическую запись электротехнического изделия;
- макет этикетки с GS1 DataMatrix;
- тестовый принтер или безопасный вывод в файл;
- отдельный маршрут, не связанный с рабочей очередью предприятия.
Не используйте в учебном сценарии реальные заказы, коммерческие идентификаторы, внутренние адреса, строки подключения, токены и персональные данные.
Шаг 1. Создаём REST-коннектор для MES
В разделе «Коннекторы» создайте входящий REST-коннектор с понятным кодом, например mes-label-ax40. Для теста достаточно приёма массива JSON-объектов. В рабочей среде обязательно настройте предусмотренный предприятием способ аутентификации и сетевые ограничения.
Контракт тестового запроса:
[
{
"orderNo": "MO-2026-004281",
"sku": "EL-TERM-AX40",
"lot": "B260926-03",
"productionDate": "2026-09-26",
"lineCode": "PK-2",
"status": "ReadyForLabel"
}
]
В редакторе сценария загрузите безопасный JSON-пример. После разбора должны появиться поля orderNo, sku, lot, productionDate, lineCode и status.
Рисунок 2. Загрузка синтетического REST-примера и проверка входных полей.
Шаг 2. Оставляем только готовые записи
Добавьте узел «Фильтр» и задайте условие status = ReadyForLabel. Оно делает производственное правило видимым и не позволяет отправить в печать отменённую или ещё не подтверждённую упаковку.
Откройте предпросмотр узла. Для одной готовой записи счётчик должен показывать 1 → 1. Проверку отрицательного случая удобно выполнить отдельным запросом со статусом, который не разрешает печать.
Рисунок 3. Фильтр пропускает только записи со статусом ReadyForLabel.
Шаг 3. Обогащаем данные из SQL
Добавьте узел «Внешние данные», выберите SQL-коннектор и соедините поле sku из MES с полем Sku справочника. Для производственного варианта используйте INNER JOIN: неизвестный артикул не должен пройти дальше с пустыми реквизитами.
| Параметр | Значение в примере | Назначение |
|---|---|---|
| Левый ключ | sku | Артикул из MES |
| Правый ключ | Sku | Артикул SQL-справочника |
| Тип объединения | INNER | Пропускать только известные изделия |
| Выходные поля | Barcode, Name, Category, Quantity | Данные для GS1 и читаемых элементов макета |
В демонстрационном справочнике поле Barcode содержит дополнительный идентификатор продукции, а не подтверждённый GTIN-14. Поэтому ниже оно связывается с AI (240). Если предприятие хранит валидный GTIN-14, используйте отдельное строковое поле и AI (01).
Рисунок 4. Настройка объединения REST-задания со справочником SQL.
Шаг 4. Подготавливаем дату производства
Добавьте узел «Вычисляемое поле». Создайте поле Gs1ProductionDate и используйте выражение:
FormatDate([productionDate], 'yyMMdd')
Для даты 2026-09-26 результатом будет 260926 — ровно шесть цифр, которые ожидает AI (11).
Шаг 5. Настраиваем GS1-строку
Добавьте узел «GS1-строка» и задайте имя выходного поля Gs1Value. В проверенном сценарии используются четыре идентификатора применения:
| AI | Содержание | Поле сценария |
|---|---|---|
240 | Дополнительный идентификатор продукции | Barcode |
11 | Дата производства | Gs1ProductionDate |
10 | Номер партии | lot |
21 | Серийный идентификатор | orderNo в демонстрации |
Почему не AI (01). AI (01) принимает ровно 14 цифр GTIN с корректной контрольной цифрой. Нельзя превращать произвольный EAN-подобный номер в GTIN-14 простым добавлением ведущего нуля: длина изменится, но контрольная цифра может остаться неверной. В нашем демонстрационном источнике значение является дополнительным идентификатором продукции, поэтому корректно использовать AI (240), который допускает от 1 до 30 символов.
Если в корпоративном справочнике есть настоящий GTIN-14, храните его как строку, проверяйте контрольную цифру в мастер-данных и связывайте с AI (01) без искусственного дополнения.
Для серийного процесса вместо номера заказа в AI (21) следует передавать уникальный серийный номер каждой упаковки. Его можно подготовить отдельным вычислением или счётчиком в зависимости от принятого правила уникальности.
Рисунок 5. Опубликованная настройка GS1: AI (240), дата производства, партия и демонстрационный серийный идентификатор.
Шаг 6. Проверяем и публикуем сценарий
Перед публикацией последовательно откройте предпросмотр фильтра, SQL-обогащения, вычисляемой даты и GS1-узла. Проверьте:
- готовая входная запись даёт одну выходную запись;
- артикул найден в SQL ровно один раз;
- дата имеет формат
YYMMDD; - значение AI (240) не превышает 30 символов;
- партия и серийный идентификатор укладываются в ограничения выбранных AI;
- поле
Gs1Valueпоявилось в выходной схеме.
Сохраните и опубликуйте сценарий. Если сценарий уже используется маршрутом, снятие с публикации остановит этот маршрут. После выпуска новой версии откройте маршрут, проверьте выбранный источник и активируйте его вручную.
Шаг 7. Создаём макет этикетки
В дизайнере создайте макет «Электротехнические изделия — GS1». В качестве источника данных выберите опубликованный сценарий «Производство — GS1 из MES и SQL». Это важный архитектурный момент: макет получает уже подготовленные поля сценария, а сам сценарий запускается от входящего коннектора.
Свяжите:
- GS1 DataMatrix — с полем
Gs1Value; - номер заказа — с
orderNo; - артикул — с
sku; - читаемые тексты — с полями, полученными из SQL.
Рисунок 6. Макет этикетки электротехнического изделия с DataMatrix, номером заказа и линейным кодом.
Снимок выполнен на отдельном демонстрационном наборе данных, поэтому служебный артикул на экране может отличаться от синтетического артикула в JSON-примере.
Шаг 8. Создаём маршрут печати
В разделе «Маршруты» создайте маршрут «Производство — электротехнические изделия GS1» и последовательно выберите:
- источник — сценарий «Производство — GS1 из MES и SQL»;
- входной коннектор сценария —
mes-label-ax40; - макет — «Электротехнические изделия — GS1»;
- тестовый принтер —
PDF24; - количество копий —
1; - режим отправки — надёжная очередь.
Если у REST-коннектора нет расписания, это нормально: сценарий запускается при входящем POST-запросе. После сохранения активируйте маршрут и убедитесь, что в списке указана версия 2.
Рисунок 7. Активный маршрут использует коннектор mes-label-ax40, опубликованную версию 2 и показывает последний переданный набор.
Шаг 9. Отправляем тестовый запрос
Отправьте массив JSON-объектов методом POST на входящий адрес коннектора:
POST https://<адрес-приложения>/api/connectors/inbound/mes-label-ax40
Content-Type: application/json
[
{
"orderNo": "MO-2026-004281",
"sku": "EL-TERM-AX40",
"lot": "B260926-03",
"productionDate": "2026-09-26",
"lineCode": "PK-2",
"status": "ReadyForLabel"
}
]
Ответ 202 Accepted означает, что запрос принят в обработку. Он ещё не доказывает успешную печать, поэтому сохраните runId и проверьте два экрана: журнал выполнений сценариев и очередь печати.
Шаг 10. Проверяем сквозной результат
В журнале выполнений найдите свежую строку нужного сценария. Для проверенного запуска версия 2 завершилась успешно, маршрут определён, а количество записей равно 1 → 1.
Рисунок 8. Успешное выполнение сценария версии 2: одна входная и одна подготовленная запись.
Затем откройте очередь печати. Новое задание должно содержать нужный макет и тестовый принтер. В проверенном прогоне задание «Электротехнические изделия — GS1» завершилось на PDF24 с первой попытки.
Рисунок 9. Завершённое задание печати с выбранным макетом и принтером PDF24.
Что проверять при ошибке
| Ситуация | Ожидаемое поведение | Что проверить |
|---|---|---|
Статус отличается от ReadyForLabel | Фильтр не передаёт запись дальше | Состояние задания в MES |
| Артикул отсутствует в SQL | INNER JOIN даёт нулевой результат | SKU и актуальность справочника |
| Для SKU найдено несколько строк | Сценарий не должен выбирать нормативную запись случайно | Уникальность ключа SQL |
| В AI (01) передан EAN-подобный номер | Проверка длины или контрольной цифры завершается ошибкой | Использовать валидный GTIN-14 либо подходящий AI, например 240 |
| Дата отсутствует или не разбирается | Нельзя сформировать AI (11) | Контракт REST и формат исходного поля |
| Сценарий переопубликован | Связанный маршрут может остановиться | Версию источника и повторную активацию маршрута |
| SQL недоступен | Задание не уходит в печать с пустыми данными | Подключение, права, тайм-аут и журнал выполнения |
| Принтер недоступен | Задание остаётся наблюдаемым в очереди | Состояние принтера, попытки и текст ошибки |
Что получает производство
- MES передаёт компактное оперативное задание;
- постоянные сведения централизованно загружаются из SQL;
- правила отбора и преобразования видны в версионируемом сценарии;
- структура GS1 проверяется до передачи данных в макет;
- макет не зависит от прямого подключения к MES или SQL;
- маршрут связывает сценарий, макет и принтер;
- каждый запуск прослеживается от REST-запроса до очереди печати.
Границы примера
Материал описывает внутренний производственный процесс печати этикетки для электротехнического изделия. Он не подтверждает соответствие конкретному отраслевому регламенту, не описывает получение кодов государственной маркировки, ввод товаров в оборот или обмен отчётами с внешней системой. Состав AI и правила уникальности предприятие определяет по требованиям своего процесса и получателя продукции.
Перед вводом в эксплуатацию выполните физическую печать на фактическом сочетании принтера, разрешения и материала, а затем считайте код производственным сканером. Успешный программный прогон не заменяет проверку качества печати.
Как познакомиться с решением
AxioLabel Профессиональный пока не выпущен для общего доступа. Если вы хотите обсудить производственный сценарий, интеграцию с MES и SQL или участие в предварительной программе, познакомьтесь с возможностями AxioКлуба.