Як налаштувати автоматичну генерацію QR-кодів на товари в 1С-Бітрікс?
При запуску роздрібної точки з вітриною QR-кодів або при маркуванні пакувань для складу постає задача: згенерувати унікальний код для кожної одиниці товару. Ручне створення тисяч зображень — не варіант. Ми налаштовуємо автоматичну генерацію QR-кодів у Бітрікс під ключ: від вибору бібліотеки до інтеграції зі складськими процесами. Зв'яжіться з нами для оцінки вашого проєкту.
Основні складності, які ми вирішуємо: високе навантаження при масовій генерації (1000+ товарів), необхідність підтримки різних форматів (PNG, SVG) та забезпечення читаності коду на упаковці. Наш досвід показує, що правильно налаштована генерація економить до 80% часу менеджера. Без автоматизації менеджери витрачають години на створення QR через сторонні сервіси, а при оновленні цін або описів коди доводиться перегенеровувати вручну. Ми розробляємо рішення, яке інтегрується з вашим каталогом та генерує коди на льоту або за розкладом. У результаті ви отримуєте готові до друку PNG з логотипом компанії та короткими посиланнями для відстеження конверсій. Автоматизація генерації QR-кодів окупається в середньому за 2–3 місяці роботи складу, а в грошовому вираженні економія може складати до 40 000 грн на місяць на зарплаті менеджера.
Яку бібліотеку обрати для генерації QR?
У 1С-Бітрікс немає вбудованого генератора QR-кодів. Підключається стороння бібліотека через Composer. Два популярні варіанти:
endroid/qr-code надає багатий функціонал: підтримка PNG з логотипом, безліч рівнів корекції помилок, робота з різними кодуваннями. chillerlan/php-qrcode легший і швидший, не потребує розширення GD.
| Характеристика | endroid/qr-code | chillerlan/php-qrcode |
|---|---|---|
| Розмір пакету | ~500 KB | ~100 KB |
| PNG з логотипом | Так | Ні |
| Підтримка SVG | Так | Ні |
| Швидкість генерації | Середня | Висока |
| Залежності | ext-gd | Ні |
Для більшості проєктів ми обираємо endroid/qr-code через гнучкість та можливість брендування.
Що кодувати в QR-код?
Можливі варіанти вмісту QR:
- URL картки товару — універсальний варіант для переходу на сайт
- UTM-посилання — з мітками джерела для аналітики офлайн/онлайн конверсії
- Артикул — для внутрішнього використання на складі, сканується терміналом
- Посилання на інструкцію або сертифікат — для документної частини
Важливо: URL має бути коротким, інакше QR стає щільним і гірше читається дешевими сканерами. Для довгих URL використовуйте власний редиректор: https://shop.ua/go/A123/ → redirect → актуальний URL.
Як реалізована генерація в Бітрікс?
Встановлення бібліотек:
composer require endroid/qr-code # або composer require chillerlan/php-qrcode Базовий клас-генератор з кешуванням:
namespace Custom\Catalog; use Endroid\QrCode\Builder\Builder; use Endroid\QrCode\Encoding\Encoding; use Endroid\QrCode\ErrorCorrectionLevel; use Endroid\QrCode\Writer\PngWriter; class ProductQrGenerator { private string $uploadDir; public function __construct() { $this->uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/upload/qr/'; if (!is_dir($this->uploadDir)) mkdir($this->uploadDir, 0755, true); } public function generateForProduct(int $productId, string $url): string { $fileName = 'product-' . $productId . '.png'; $filePath = $this->uploadDir . $fileName; if (file_exists($filePath)) return '/upload/qr/' . $fileName; $result = Builder::create() ->writer(new PngWriter()) ->data($url) ->encoding(new Encoding('UTF-8')) ->errorCorrectionLevel(ErrorCorrectionLevel::High) ->size(400)->margin(10) ->build(); $result->saveToFile($filePath); return '/upload/qr/' . $fileName; } public function generateBatch(array $productIds): void { foreach ($productIds as $id) { $element = \CIBlockElement::GetByID($id)->GetNextElement(); if (!$element) continue; $fields = $element->GetFields(); $url = 'https://' . SITE_SERVER_NAME . $fields['DETAIL_PAGE_URL']; $this->generateForProduct($id, $url); } } } Автоматична генерація при додаванні товару через обробник події OnAfterIBlockElementAdd, як зазначено в документації 1С-Бітрікс:
AddEventHandler('iblock', 'OnAfterIBlockElementAdd', function(&$fields) { if ($fields['IBLOCK_ID'] != CATALOG_IBLOCK_ID) return; $generator = new \Custom\Catalog\ProductQrGenerator(); $url = 'https://' . SITE_SERVER_NAME . '/catalog/item/' . $fields['CODE'] . '/'; $generator->generateForProduct($fields['ID'], $url); }); Виведення QR-коду в шаблоні картки товару:
<?php if (!empty($arResult['PROPERTIES']['QR_CODE_URL']['VALUE'])): ?> <div class="product-qr"> <img src="<?= $arResult['PROPERTIES']['QR_CODE_URL']['VALUE'] ?>" alt="QR-код товару" width="120" height="120"> <a href="<?= $arResult['PROPERTIES']['QR_CODE_URL']['VALUE'] ?>" download="qr-<?= $arResult['ID'] ?>.png">Завантажити QR</a> </div> <?php endif; ?> Чому важливо кешувати QR-коди?
Генерація кожного QR-коду — затратна операція. При масовому вивантаженні етикеток (1000+ товарів) без кешування сервер може не впоратися. У нашому класі перевіряється наявність файлу перед повторною генерацією. Це знижує навантаження на 90% при повторному запуску.
Як ми прискорюємо масову генерацію
Для пакетної обробки 1000+ товарів за один запуск використовуємо виконання через агенти: розбиваємо масив ID на порції по 50 і ставимо агент з інтервалом 10 секунд. Це дозволяє уникнути таймаутів і перевищення пам'яті. У результаті весь каталог обробляється за кілька хвилин.Що входить у роботу
- Аналіз поточного каталогу та сценаріїв використання QR
- Вибір та підключення бібліотеки через Composer
- Реалізація генератора з кешуванням та пакетною обробкою
- Налаштування автоматичної генерації при додаванні/оновленні товарів
- Інтеграція з вивантаженням етикеток (формати PNG, SVG)
- Створення коротких редиректів (опціонально)
- Документація та навчання персоналу На виконані роботи надається гарантія 12 місяців.
Терміни виконання
| Обсяг робіт | Термін |
|---|---|
| Базова генерація QR + збереження + виведення | від 1 дня |
| Пакетна генерація + автоматика по події | +1 день |
| QR з логотипом + редиректор | +2 дні |
| Повна інтеграція зі складом та 1С | від 3 днів |
Типові помилки при генерації QR-кодів та їх запобігання
Часто зустрічаються дві проблеми: нечитаність коду через переповнення даних та дублювання файлів при повторній генерації. Щоб уникнути першої, використовуйте рівні корекції помилок не нижче M, а для щільних даних — H. Друга вирішується кешуванням за ID товару, як показано в коді вище.
Налаштована один раз генерація працює без участі менеджера — це автоматизація, яку помічають тільки результати. Замовте налаштування QR-генерації та спростіть роботу складу. Отримайте консультацію та детальний розрахунок кошторису під ваш проєкт. Наша команда має досвід більше 50 проєктів з інтеграцією зовнішніх сервісів.







