Налаштування кодів маркування Data Matrix на 1С-Bitrix
Код Data Matrix для маркування — це двовимірний штрих-код, який кодує ідентифікатор товарної одиниці (GTIN), серійний номер й криптозахисний елемент. На рівні Bitrix'у завдання зводиться до: отримати коди від постачальника або системи маркування, зберегти в БД, відобразити на етикетці при необхідності й списати при продажі.
Структура коду Data Matrix у системі маркування
Повний код маркування має вид: 01 + GTIN (14 символів) + 21 + серійний номер (до 20 символів) + криптохвіст. Приклад:
0104607086000058215t2&/u+K<K)O
Розшифрування: 01 — ідентифікатор застосування (Application Identifier) для GTIN, 21 — AI для серійного номера. Розбір коду у PHP:
function parseMarkingCode(string $code): array {
// GS1 DataMatrix формат
preg_match('/^01(\d{14})21(.{1,20})(.*)$/u', $code, $matches);
return [
'gtin' => $matches[1] ?? null,
'serial' => $matches[2] ?? null,
'crypto' => $matches[3] ?? null,
];
}
Крипто-хвіст містить нечитабельні символи групового розділювача (GS, ASCII 29). При зберіганні в MySQL упевніться, що колонка utf8mb4 й тип даних дозволяє такі символи — використовуйте VARBINARY(200) або VARCHAR(200) з utf8mb4_bin collation.
Генерація й друк етикеток
Іноді потрібно генерувати зображення Data Matrix для друку етикеток. PHP-бібліотека tecnickcom/tcpdf умить рендерити Data Matrix. Через Composer:
composer require tecnickcom/tcpdf
Генерація зображення:
$pdf = new \TCPDF();
$pdf->write2DBarcode(
$markingCode,
'DATAMATRIX',
$x, $y, $width, $height,
['border' => false, 'padding' => 1]
);
У Bitrix'і інтегруєте у адміністративний розділ: на сторінці перегляду замовлення додаєте кнопку «Друк етикеток», яка генерує PDF з кодами для всіх маркованих товарів у замовленні. PDF-генерацію виконує AJAX-обробник у /local/ajax/print_labels.php.
Сканування кодів при приймці
Якщо товари приймаються на складі й потрібно сканувати Data Matrix при приймці в Bitrix'і — створюєте адміністративний інтерфейс з полем для введення коду (фокус на поле, сканер відправляє код й Enter). Після введення коду:
- Парсите код, витягуєте GTIN й серійний номер
- Шукаєте товар у каталозі за GTIN (властивість
GTINуb_iblock_element_prop_s*) - Створюєте запис в
b_local_marking_codeзі статусомreceived - Опціонально — відправляєте підтвердження приймки у ГІС МТ
Для швидкої роботи з великою кількістю кодів — батчева запис через INSERT INTO ... VALUES (...), (...), (...) або через ORM D7 addMulti().
Перевірка коду при продажі
Перед оформленням замовлення покупця або при зборці замовлення — перевіряєте статус коду. Код повинен бути у статусі received (є на складі) й не повинен бути вже проданий або скасований.
При обробці замовлення на збірку — кладовщик сканує коди маркування товарів з замовлення. Якщо код збігається з очікуваним товаром й статус коректний — позиція позначається як зібрана.
При відгрузці — усі коди з замовлення переводяться у статус sold й ставляться в чергу на відправлення сповіщення у ГІС МТ.
Повернення й повторна активація кодів
При поверненні товару код маркування потрібно «повернути в оборот». У ГІС МТ є операція повернення — статус коду змінюється з sold на active. У Bitrix'і при обробці повернення (подія OnSaleOrderReturn або ручна обробка менеджером) переводите код у статус returned й відправляєте сповіщення про повернення у ГІС МТ.







