יצירת והדפסת תוויות אוטומטית מ-1C-Bitrix

דמיינו מחסן המעבד 300 הזמנות ביום. כל תווית מודפסת ידנית מתבנית Word: העתקת הכתובת, שם המוצר, המשקל. תווית אחת אורכת 2-3 שניות. בקנה מידה יומי - מדובר ביותר משעתיים של עבודה מונוטונית בתוספת שגיאות בלתי נמנעות (כ-5% מההזמנות עם כתובות שגויות). Wh
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
יצירת והדפסת תוויות אוטומטית מ-1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    806
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1163

תארו לעצמכם מחסן שמעבד 300 הזמנות ביום. כל תווית מודפסת ידנית מתבנית Word: העתקת הכתובת, שם המוצר, המשקל. תווית אחת לוקחת 2–3 שניות. בקנה מידה יומי — מדובר ביותר משעתיים של עבודה מונוטונית בתוספת שגיאות בלתי נמנעות (כ-5% מההזמנות עם כתובות שגויות). כשהנפחים גדלים ל-500 הזמנות, תיוג ידני הופך לצוואר בקבוק קריטי: העובדים מוסחים, אחוז ההחזרות עקב כתובות שגויות גדל. הגדרת יצירת תוויות והדפסה מ-1C-Bitrix הופכת תהליך זה לאוטומטי: יצירה בכפתור אחד מכרטיס ההזמנה או בקבוצה מהרשימה. למהנדסים שלנו יש ניסיון של למעלה מ-10 שנים בפיתוח Bitrix, ולכן אנו פותרים את המשימה "מפתח ביד" תוך התחשבות בציוד שלכם.

פורמטים נתמכים: PDF ו-ZPL

התוויות נוצרות בשני פורמטים עיקריים: PDF — להדפסה תרמית ולמדפסות רגילות — אנו משתמשים בספריית mPDF (הטובה ביותר לקירילית ולעיצוב CSS); ZPL (שפת תכנות Zebra) — למדפסות תעשייתיות Zebra, TSC, Honeywell. אנו שולחים פקודות ZPL ישירות למדפסת דרך TCP/IP ללא יצירת PDF — מהירות הדפסה מקסימלית (עד 4 תוויות בשנייה). בחירת הפורמט תלויה בציוד הזמין: PDF מתאים למדפסות משרדיות, ZPL להדפסת פס ייצור.

התקנת mPDF ומחולל ברקודים דרך Composer:

composer require mpdf/mpdf composer require picqer/php-barcode-generator 

השוואת פורמטים:

פרמטר PDF ZPL
תאימות כל המדפסות Zebra, TSC, Honeywell
מהירות בינונית (המרת HTML→PDF) מקסימלית (שליחה ישירה)
התאמה אישית דרך HTML/CSS דרך פקודות ZPL
ברקודים מוטמעים כ-PNG נוצרים עם פקודות ^BC

תבניות תוויות

התווית היא תבנית HTML עם החלפת נתונים. נשמרת ב-composer require mpdf/mpdf composer require picqer/php-barcode-generator :

<!-- shipping_label.html --> <div class="label" style="width:100mm; height:150mm; font-family: Arial;"> <div class="sender"> <strong>ООО Магазин</strong><br> г. Москва, ул. Ленина, 1 </div> <div class="barcode"> <img src="barcode_{ORDER_ID}.png" width="200"> </div> <div class="recipient"> <strong>{RECIPIENT_NAME}</strong><br> {RECIPIENT_ADDRESS}<br> {RECIPIENT_PHONE} </div> <div class="order-info"> Заказ #{ORDER_ID} | {ORDER_DATE}<br> Вес: {WEIGHT} кг | Мест: {ITEMS_COUNT} </div> </div> 

מחולל התוויות

קוד המחולל (לחצו להרחבה)
namespace Custom\Warehouse; class LabelGenerator { public function generateShippingLabel(int $orderId): string { $order = \Bitrix\Sale\Order::load($orderId); if (!$order) throw new \Exception("Order $orderId not found"); $shipment = $this->getMainShipment($order); $propertyCollection = $order->getPropertyCollection(); $data = [ '{ORDER_ID}' => $order->getId(), '{ORDER_DATE}' => $order->getDateInsert()->format('d.m.Y'), '{RECIPIENT_NAME}' => $propertyCollection->getPayerName()->getValue(), '{RECIPIENT_PHONE}' => $propertyCollection->getPhone()->getValue(), '{RECIPIENT_ADDRESS}' => $this->buildAddress($propertyCollection), '{WEIGHT}' => $this->calculateWeight($order), '{ITEMS_COUNT}' => $order->getBasket()->count(), ]; $template = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/local/templates/.default/labels/shipping_label.html'); $html = str_replace(array_keys($data), array_values($data), $template); // Generate barcode $this->generateBarcode($orderId); return $this->htmlToPdf($html, $orderId); } private function generateBarcode(int $orderId): void { $generator = new \Picqer\Barcode\BarcodeGeneratorPNG(); $barcode = $generator->getBarcode((string)$orderId, $generator::TYPE_CODE_128); file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/labels/barcode_' . $orderId . '.png', $barcode); } private function htmlToPdf(string $html, int $orderId): string { $mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'format' => [100, 150], // 100mm x 150mm 'margin_top' => 5, 'margin_bottom' => 5, 'margin_left' => 5, 'margin_right' => 5, ]); $mpdf->WriteHTML($html); $outputPath = '/upload/labels/label-' . $orderId . '.pdf'; $mpdf->Output($_SERVER['DOCUMENT_ROOT'] . $outputPath, 'F'); return $outputPath; } } 

כיצד להוסיף כפתור הדפסה לפאנל הניהול של Bitrix?

הכפתור "הדפסת תווית" מתווסף לכרטיס ההזמנה דרך ה-handler /local/templates/.default/labels/ או דרך פעולה מותאמת אישית ב-<!-- shipping_label.html --> <div class="label" style="width:100mm; height:150mm; font-family: Arial;"> <div class="sender"> <strong>ООО Магазин</strong><br> г. Москва, ул. Ленина, 1 </div> <div class="barcode"> <img src="barcode_{ORDER_ID}.png" width="200"> </div> <div class="recipient"> <strong>{RECIPIENT_NAME}</strong><br> {RECIPIENT_ADDRESS}<br> {RECIPIENT_PHONE} </div> <div class="order-info"> Заказ #{ORDER_ID} | {ORDER_DATE}<br> Вес: {WEIGHT} кг | Мест: {ITEMS_COUNT} </div> </div> . בלחיצה, נוצר PDF ונפתח בכרטיסיית דפדפן חדשה.

להדפסה בקבוצה (מספר הזמנות מהרשימה) — פעולה "הדפסת תוויות" דרך בחירת תיבות סימון ב-namespace Custom\Warehouse; class LabelGenerator { public function generateShippingLabel(int $orderId): string { $order = \Bitrix\Sale\Order::load($orderId); if (!$order) throw new \Exception("Order $orderId not found"); $shipment = $this->getMainShipment($order); $propertyCollection = $order->getPropertyCollection(); $data = [ '{ORDER_ID}' => $order->getId(), '{ORDER_DATE}' => $order->getDateInsert()->format('d.m.Y'), '{RECIPIENT_NAME}' => $propertyCollection->getPayerName()->getValue(), '{RECIPIENT_PHONE}' => $propertyCollection->getPhone()->getValue(), '{RECIPIENT_ADDRESS}' => $this->buildAddress($propertyCollection), '{WEIGHT}' => $this->calculateWeight($order), '{ITEMS_COUNT}' => $order->getBasket()->count(), ]; $template = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/local/templates/.default/labels/shipping_label.html'); $html = str_replace(array_keys($data), array_values($data), $template); // Generate barcode $this->generateBarcode($orderId); return $this->htmlToPdf($html, $orderId); } private function generateBarcode(int $orderId): void { $generator = new \Picqer\Barcode\BarcodeGeneratorPNG(); $barcode = $generator->getBarcode((string)$orderId, $generator::TYPE_CODE_128); file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/labels/barcode_' . $orderId . '.png', $barcode); } private function htmlToPdf(string $html, int $orderId): string { $mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'format' => [100, 150], // 100mm x 150mm 'margin_top' => 5, 'margin_bottom' => 5, 'margin_left' => 5, 'margin_right' => 5, ]); $mpdf->WriteHTML($html); $outputPath = '/upload/labels/label-' . $orderId . '.pdf'; $mpdf->Output($_SERVER['DOCUMENT_ROOT'] . $outputPath, 'F'); return $outputPath; } } . נוצר PDF רב-עמודים אחד. דוגמת קוד להוספת הפעולה:

// событие OnAdminSaleOrderListMenu function addPrintLabelsAction(\Bitrix\Main\Event $event) { $items = &$event->getParameter('items'); $items[] = [ 'TEXT' => 'Распечатать этикетки', 'ACTION' => 'printLabels()', 'ICON' => 'adm-btn-print', ]; } 

הדפסה ישירה ללא PDF (ZPL)

למדפסות Zebra, התווית נוצרת ב-ZPL ונשלחת ישירות:

function printZebraLabel(int $orderId, string $printerIp, int $printerPort = 9100): void { $zpl = "^XA\n^FO50,50^A0N,30,30^FD Заказ #$orderId ^FS\n^XZ"; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($socket, $printerIp, $printerPort); socket_send($socket, $zpl, strlen($zpl), 0); socket_close($socket); } 

כיצד נוצר הברקוד?

הברקוד נוצר על בסיס מזהה ההזמנה באמצעות ספריית OnAdminContextMenuShow. תומך ב-Code 128, QR, ופורמטים נוספים. קובץ ה-PNG נשמר ב-sale/order_detail.php ומוכנס לתבנית ה-HTML. ב-ZPL, הברקוד נוצר עם פקודות sale/order_list.php, שאינו דורש יצירת תמונה.

מדוע אוטומציה של הדפסת תוויות חוסכת כסף?

שגיאות במילוי ידני של תוויות עולות ביוקר: כתובת שגויה — החזרת סחורה, אובדן לקוח, משלוח מחדש. המקרה שלנו: חנות מקוונת עם 300 הזמנות ביום לפני האוטומציה בילתה שעתיים על תיוג והיו לה 5% פגמים. לאחר היישום, הזמן ירד ל-5 דקות, השגיאות ל-0.5%. החיסכון בלוגיסטיקה הסתכם ב-18% עקב הפחתת החזרות. העלות הממוצעת של החזרה (לוגיסטיקה + אובדן הכנסה) הייתה משמעותית — לאחר היישום, סכום זה ירד פי כמה. אוטומציה של הדפסת תוויות מחזירה את עצמה בממוצע תוך חודשיים.

התקנה שלב אחר שלב לפרויקט שלכם

  1. איסוף דרישות: נפחי הזמנות, סוגי מדפסות, פורמט תווית, צורך בברקוד.
  2. פיתוח תבנית תווית HTML לפי העיצוב שלכם (נדרשת פריסה או דוגמה).
  3. יישום מחולל PDF ו/או ZPL, אינטגרציה עם המדפסות שלכם.
  4. הוספת כפתור הדפסה לכרטיס ההזמנה ו/או הדפסה בקבוצה.
  5. בדיקה על 50-100 הזמנות, הדרכת עובדים.

לוח זמנים ליישום

היקף העבודה לוח זמנים
תבנית HTML + יצירת PDF + כפתור בהזמנה 1–2 ימים
ברקודים + הדפסה בקבוצה +יום אחד
ZPL ל-Zebra + הדפסה ברשת +יום אחד
אינטגרציה עם תוויות משלוח ל-SDEK/דואר רוסי משימה נפרדת

מה כלול בעבודה

  • פיתוח תבנית תווית HTML לפי העיצוב שלכם
  • יצירת PDF ו/או ZPL
  • ברקודים (Code 128, QR)
  • כפתור הדפסה בכרטיס ההזמנה
  • הדפסה בקבוצה מרשימת ההזמנות
  • אינטגרציה עם מדפסות רשת (Zebra, TSC וכו')
  • תיעוד להתקנה ולתמיכה
  • הדרכת עובדים (מרחוק או באתר)

אנו מבטיחים פעולה יציבה של הפתרון לאחר היישום. סיום הפרויקט תוך 3–5 ימים בהתאם למורכבות. צרו קשר להערכת הפרויקט שלכם — נמצא את הפתרון האופטימלי למחסן שלכם. בקשו ייעוץ, ונשלח הצעה מסחרית תוך 24 שעות.