Інтеграція 1С-Бітрікс з принтерами етикеток Zebra

Принтер етикеток Zebra — потужний пристрій, але без правильної інтеграції його потенціал не використовується. Оператори вручну копіюють дані з Бітрікс у Excel, потім друкують через ZDesigner. Це повільно та загрожує помилками: штрихкоди плутаються, ціни застарівають. Наша команда — сертифіковані роз
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з принтерами етикеток Zebra
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1442
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1013
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    752
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    873
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    794
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1154

Принтер етикеток Zebra — потужний пристрій, але без правильної інтеграції його потенціал не використовується. Оператори вручну копіюють дані з Бітрікс у Excel, потім друкують через ZDesigner. Це повільно та загрожує помилками: штрихкоди плутаються, ціни застарівають. Наша команда — сертифіковані розробники Бітрікс із 10+ роками досвіду та понад 40 реалізованими проєктами — автоматизує друк етикеток безпосередньо з вашого сайту. При зміні ціни, надходженні товару або відвантаженні етикетка формується та надсилається на принтер Zebra без участі людини. Ми використовуємо ZPL — промислову мову керування принтерами Zebra. Передача відбувається за протоколом TCP/IP RAW (порт 9100).

Як працює друк через ZPL

Принтери Zebra працюють у мережі за протоколами TCP/IP (порт 9100 — RAW print) або через веб-інтерфейс. ZPL-команди надсилаються як текст у TCP-сокет.

function printZpl(string $printerIp, int $printerPort, string $zpl): bool { $socket = fsockopen($printerIp, $printerPort, $errno, $errstr, 5); if (!$socket) { \Bitrix\Main\Diag\Debug::writeToFile("Zebra: $errstr ($errno)", '', '/bitrix/zebra_errors.log'); return false; } fwrite($socket, $zpl); fclose($socket); return true; } 

Для Windows-середовищ із shared-принтером — альтернативний підхід через локальний агент на Python або Node.js, який приймає завдання від Бітрікс по HTTP та надсилає на принтер через WinSpool.

Генерація ZPL-етикетки товару

Етикетка товару (ціна + штрихкод + артикул) генерується класом ZebraLabelGenerator:

class ZebraLabelGenerator { public function generatePriceLabel(array $product, string $priceType = 'BASE'): string { $price = \CCatalogProduct::GetOptimalPrice($product['ID'])['PRICE']['PRICE'] ?? 0; $barcode = $this->getBarcode($product['ID']); $name = mb_substr($product['NAME'], 0, 30); return implode("\n", [ '^XA', '^CI28', '^PW464', '^LL200', '^FO20,10^A0N,24,24^FD' . $name . '^FS', '^FO20,40^A0N,18,18^FD' . ($product['PROPERTY_ARTICLE_VALUE'] ?? '') . '^FS', '^FO20,65^A0N,36,36^FD' . number_format($price, 2, '.', ' ') . ' руб.^FS', '^FO20,110^BY2^BCN,50,Y,N,N^FD' . $barcode . '^FS', '^XZ', ]); } private function getBarcode(int $productId): string { $row = \Bitrix\Catalog\ProductBarcodeTable::getList([ 'filter' => ['PRODUCT_ID' => $productId], 'limit' => 1, ])->fetch(); return $row['BARCODE'] ?? str_pad($productId, 12, '0', STR_PAD_LEFT); } } 

Шаблони етикеток у базі даних

Шаблони ZPL зберігаються в таблиці bl_zebra_templates, а не в коді. Це дозволяє змінювати макет без деплою. Плейсхолдери типу {{NAME}}, {{PRICE}}, {{BARCODE}} замінюються на реальні дані класом ZebraTemplateEngine.

Як автоматизувати друк при зміні ціни?

При зміні ціни через подію OnProductUpdate запускається автоматичний друк:

AddEventHandler('catalog', 'OnProductUpdate', function($productId) { $needPrint = \Bitrix\Main\Config\Option::get('zebra_module', 'auto_print_price_change', 'N'); if ($needPrint !== 'Y') return; $product = \CIBlockElement::GetByID($productId)->GetNext(); $printerIp = \Bitrix\Main\Config\Option::get('zebra_module', 'default_printer_ip'); $zpl = (new ZebraLabelGenerator())->generatePriceLabel($product); ZebraPrinter::send($printerIp, 9100, $zpl); }); 

При прийманні товару — після обробки документа надходження формується черга завдань:

foreach ($receiptItems as $item) { for ($i = 0; $i < $item['qty']; $i++) { $jobs[] = [ 'product_id' => $item['product_id'], 'copies' => 1, 'template' => 'warehouse_label', 'printer_id' => $item['warehouse_printer_id'], ]; } } ZebraPrintQueue::push($jobs); 

Черга та повтори

Черга друку bl_zebra_print_queue обробляється агентом кожну хвилину. Це надійніше за прямий друк в обробнику події — принтер може бути тимчасово недоступний.

CREATE TABLE bl_zebra_print_queue ( id SERIAL PRIMARY KEY, printer_id INT NOT NULL, template_id INT NOT NULL, data_json JSONB NOT NULL, status VARCHAR(20) DEFAULT 'pending', attempts SMALLINT DEFAULT 0, scheduled_at TIMESTAMP DEFAULT NOW(), printed_at TIMESTAMP ); 

При помилці друку статус змінюється на retry, лічильник спроб збільшується. Після 5 невдалих спроб статус стає failed, адміністратор отримує сповіщення.

Чому Zebra — стандарт для складу?

Принтери Zebra використовують термодрук — не потрібні картриджі, фарба не змащується. Протокол ZPL дозволяє гнучко формувати будь-які макети: з логотипом, змінними полями, штрихкодами EAN-13, Code 128, QR. Вбудований механізм черги друку гарантує, що жодна етикетка не загубиться при збої мережі.

Розробник модуля: «ZPL-протокол настільки гнучкий, що дозволяє друкувати етикетки будь-якого вмісту без зміни коду».

Покрокове налаштування інтеграції

  1. Встановіть модуль на сайт через marketplace або вручну.
  2. Налаштуйте шаблони етикеток в адміністративній панелі: задайте поля, шрифти, штрихкоди.
  3. Підключіть принтери по TCP/IP або через локальний агент.
  4. Призначте принтери для складів та подій (зміна ціни, приймання).
  5. Налаштуйте обмін з 1С через CommerceML, якщо потрібна синхронізація.
  6. Перевірте друк тестової етикетки.
Додаткові налаштування Для принтерів на Windows-шарі використовуйте агент, який приймає HTTP-запити та надсилає через WinSpool. Увімкніть логування помилок у `/bitrix/zebra_errors.log`.

Типові проблеми та їх вирішення

Проблема Рішення
Принтер не відповідає по TCP Перевірити порт 9100, firewall, виділений IP
Китайські символи на етикетці Переконатися, що принтер підтримує кирилицю (Zebra GC420t і вище)
Розрив з’єднання при великій черзі Увімкнути повторні спроби (до 5) та сповіщення

Що входить у роботу

Компонент Опис
Розробка модуля інтеграції Класи надсилання ZPL, генерації етикеток, черга друку
Налаштування шаблонів етикеток До 5 стандартних макетів (цінник, складська, відвантажувальна)
Підключення принтерів 1–5 пристроїв по TCP/IP або Windows-агенту
Інтеграція з 1С Автоматичне вивантаження даних у Бітрікс через CommerceML
Навчання операторів 2 години онлайн-демонстрації
Документація Повна технічна документація з інтеграції
Гарантія 6 місяців на модуль, виправлення помилок

Терміни

Етап Термін
Клас надсилання ZPL на принтер 1 день
Генератор шаблонів з плейсхолдерами 2 дні
Черга друку + агент 1 день
Обробники подій (зміна ціни, приймання) 2 дні
Адміністративний інтерфейс керування принтерами 2 дні
Тестування з реальним принтером 1 день
Разом 9–11 днів

Як інтеграція з 1С спрощує друк?

Зв’язка 1С та Бітрікс через CommerceML дозволяє не дублювати дані. Товари, ціни та залишки синхронізуються автоматично. Коли в 1С змінюється ціна, дані оновлюються в Бітрікс, і одразу спрацьовує друк нової етикетки. Оператору не потрібно вручну запускати завдання — все відбувається у фоні.

Отримайте консультацію з інтеграції — оцінимо ваш проєкт за годину. Напишіть нам, і ми підготуємо детальну комерційну пропозицію з урахуванням ваших принтерів та завдань.

Зв’яжіться з нами, щоб обговорити деталі автоматизації складу.