בעת קליטת סחורה במחסן, לעתים קרובות מתעוררת בעיה: יש לסמן כל פריט במדבקת ברקוד. ביצוע ידני של פעולה זו מוביל לשגיאות: מק"ט מבולבל, ברקוד שגוי, פורמט לא עקבי. בנפח של 200 פריטים ביום, שגיאות הן בלתי נמנעות.
אנו מבצעים אוטומציה של הדפסת תוויות וברקודים ישירות מ-1C-Bitrix: מאחסון קודים ועד שליחתם למדפסת. במאמר זה נסביר כיצד להגדיר מערכת כזו, באילו כלים אנו משתמשים, וכיצד היא מאיצה את פעילות המחסן.
החיסכון הממוצע בחומרים ובזמן מסתכם בעלות המחושבת לאחר ביקורת לשנה (בהתבסס על נתוני הפרויקטים שלנו). בנוסף, האוטומציה מבטלת הדפסות חוזרות ומפחיתה את מספר ההחזרות.
מדוע אוטומציה של הדפסת תוויות חיונית עבור מחסן?
הכנת תוויות ידנית מובילה לשגיאות: מק"ט מבולבל, ברקוד שגוי, פורמט לא עקבי. בנפחים של 100 פריטים ביום או יותר, זה הופך לקריטי. אוטומציה מבטלת את הגורם האנושי ומאיצה את התהליך פי 5–10.
בנוסף, תיוג מוצרים הוא דרישה של רשתות קמעונאות רבות ושל מרקטפלייסים. ללא ברקוד, סחורה לא תתקבל למכירה. לכן אוטומציה אינה גחמה, אלא הכרח.
כיצד אנו שומרים ומייצרים ברקודים ב-Bitrix
ברקודים נשמרים בטבלת b_catalog_product_barcode: PRODUCT_ID, BARCODE, TYPE (EAN-13, Code128, QR וכו'). למוצר בודד יכולים להיות מספר ברקודים.
אחזור ברקודים של מוצר:
$barcodes = \Bitrix\Catalog\ProductBarcodeTable::getList([
'filter' => ['PRODUCT_ID' => $productId],
'select' => ['BARCODE', 'TYPE'],
])->fetchAll();
אם ברקוד חסר, אנו מייצרים אותו אלגוריתמית. לדוגמה, EAN-13 בהתבסס על מזהה המוצר עם ספרת ביקורת:
function generateEan13FromId(int $productId): string {
$code = str_pad($productId, 12, '0', STR_PAD_LEFT);
$sum = 0;
for ($i = 0; $i < 12; $i++) {
$sum += (int)$code[$i] * ($i % 2 === 0 ? 1 : 3);
}
$checkDigit = (10 - ($sum % 10)) % 10;
return $code . $checkDigit;
}
לאחר הייצור, הברקוד נשמר ב-b_catalog_product_barcode. ניתן גם להשתמש ב-HL blocks עבור שדות מותאמים אישית אם יש צורך לאחסן נתונים נוספים, כגון תאריך תפוגה או משקל.
יצירת תמונות ברקוד
כדי ליצור תמונות, אנו משתמשים בספריות PHP מוכחות. לרוב אנו משתמשים ב-php-barcode-generator. התקנה דרך Composer — composer require picqer/php-barcode-generator.
יצירת EAN-13 ב-SVG להדפסה:
$generator = new \Picqer\Barcode\BarcodeGeneratorSVG();
$svg = $generator->getBarcode('4607134392015', $generator::TYPE_EAN_13, 3, 60);
SVG עדיף על PNG — הוא משתנה ללא אובדן איכות בכל DPI.
תבנית תווית
תווית נבנית כדף HTML עם @media print ונשלחת להדפסה דרך דפדפן או מומרת ל-PDF. תבנית מינימלית 58×40 מ"מ:
<!DOCTYPE html>
<html>
<head>
<style>
@page {
size: 58mm 40mm;
margin: 2mm;
}
body {
font-family: Arial;
font-size: 8pt;
}
.label {
width: 54mm;
height: 36mm;
display: flex;
flex-direction: column;
}
.barcode {
text-align: center;
}
.name {
font-size: 7pt;
overflow: hidden;
max-height: 12mm;
}
.price {
font-size: 14pt;
font-weight: bold;
text-align: right;
}
</style>
</head>
<body>
<div class="label">
<div class="name"><?= htmlspecialchars($product['NAME']) ?></div>
<div class="price"><?= $price ?> rub.</div>
<div class="barcode"><?= $svg ?></div>
<div style="text-align:center; font-size:7pt"><?= $barcode ?></div>
</div>
</body>
</html>
גודל 58×40 מ"מ הוא התקן עבור מדפסות תוויות Zebra/Godex.
השוואת שיטות הדפסה: HTML מול ZPL
| פרמטר | HTML + @media print | שליחה ישירה של ZPL |
|---|---|---|
| איכות הדפסה | תלויה במנהל ההתקן של המדפסת | מותאמת למדפסות תרמיות |
| מהירות הדפסה באצווה | נמוכה (כל עמוד בנפרד) | גבוהה (אצוות פקודות) |
| גמישות עיצוב | גבוהה (CSS) | בינונית (פקודות ZPL) |
| תמיכה במדפסות | כל מדפסת (עם מנהל התקן) | רק מדפסות תואמות ZPL |
עבור 1–10 תוויות, הדפסת HTML דרך הדפדפן תספיק. עבור 100+ תוויות, שליחה ישירה של ZPL למדפסת (socket בפורט 9100) מקצרת את הזמן באופן משמעותי.
כיצד להגדיר הדפסה מרוכזת דרך הממשק הניהולי?
בממשק הניהולי של Bitrix, ניתן להציג רשימת מוצרים, לבחור את אלה הדרושים ולהתחיל הדפסה מרוכזת. אנו מיישמים כפתור שאוסף את כל התוויות לקובץ PDF יחיד או שולח חבילת ZPL למדפסת.
עבור A4, אנו יוצרים פריסת רשת עם break-inside: avoid. אנו מטמיעים עמוד מותאם אישית ב-/bitrix/admin/. הוא מקבל PRODUCT_ID[] דרך GET (מרשימת המוצרים דרך פעולות מרוכזות), מרנדר את התוויות וקורא ל-window.print().
כיצד להגדיר הדפסה ישירה למדפסת
עבור Zebra ודומותיה:
$socket = fsockopen('192.168.1.100', העלות מחושבת לאחר ביקורת, $errno, $errstr, 5);
if ($socket) {
$zpl = buildZplLabel($product, $barcode);
fwrite($socket, $zpl);
fclose($socket);
}
זה עובד ללא חלון דפדפן ומהיר יותר עבור נפחים גדולים.
דוגמה לתצורה עבור Zebra GK420d
^XA ^FO50,50^A0N,30,30^FDMyLabel^FS ^FO50,100^BY2^B3N,N,100,Y,N^FD1234567890128^FS ^XZ
השוואת סוגי ברקודים
| סוג | יישום | אורך | מאפיינים |
|---|---|---|---|
| EAN-13 | קמעונאות | 13 ספרות | תקן לרוב רשתות הקמעונאות |
| Code128 | לוגיסטיקה, תיוג ארגזים | משתנה | צפיפות קידוד גבוהה |
| QR | תיוג, קישורים למידע נוסף | עד 177×177 | יכול להכיל כתובת URL |
מה כלול בעבודה שלנו
- ניתוח תהליך התיוג הנוכחי ודרישות התווית.
- תכנון מבנה אחסון הברקוד בבלוקי מידע ובבלוקי HL.
- פיתוח רכיב ליצירת ברקודים (EAN-13, Code128, QR).
- יצירת תבניות תוויות עבור הציוד שלך (Zebra, Godex, Citizen).
- הגדרת ממשק ההדפסה האדמיניסטרטיבי (אחד-אחד או בקבוצות).
- אינטגרציה עם מדפסות סטנדרטיות (דרך ZPL/EPL או דפדפן).
- בדיקות ואיתור תקלות במחסן הבדיקות שלך.
- תיעוד והדרכת עובדים (שיחת אונליין של שעתיים).
- אחריות ל-6 חודשים על המודול שפותח.
הצוות שלנו מורכב ממפתחי Bitrix מנוסים עם למעלה מ-10 שנות ניסיון ויותר מ-50 פרויקטים של אוטומציה של מחסנים. צרו קשר כדי לדון במשימה שלכם. קבלו ייעוץ בנושא אוטומציה של הדפסה במחסן שלכם. המהנדסים שלנו יעריכו את התהליכים הנוכחיים ויציעו פתרון המתאים לתקציב שלכם.

