Налаштування вивантаження штрихкодів з 1С у 1С-Бітрікс
Штрихкоди на сайті — не лише естетика картки товару. Це ключ до швидкого пошуку (покупець сканує упаковку), до інтеграції з маркетплейсами (вимагають EAN), до систем автоматичної ідентифікації в B2B. У 1С штрихкоди зберігаються в окремому регістрі, і їх передача в Бітрікс — окреме завдання, яке не покривається стандартним CommerceML «з коробки».
Як штрихкоди зберігаються в 1С
У 1С:УТ 11 та інших конфігураціях штрихкоди зберігаються в регістрі відомостей ШтрихкодиНоменклатури. Структура:
- Номенклатура — посилання на довідник
- Характеристика — якщо штрихкод прив'язаний до конкретної характеристики (SKU)
- Одиниця виміру — EAN для штуки, коробки, піддону можуть різнитися
- Штрихкод — рядок (EAN-8, EAN-13, Code128, QR, Datamatrix)
- Тип штрихкоду — EAN13, EAN8, Code128 тощо
Один товар може мати кілька штрихкодів:
- EAN-13 для одиниці (штуки)
- EAN-13 для упаковки (6 штук)
- Code128 для піддону
- Додатковий штрихкод постачальника
CommerceML та штрихкоди: стандартний спосіб
У CommerceML 2.08 є тег Штрихкод — але підтримка його в стандартному модулі обміну Бітрікс обмежена. Штрихкод передається як додатковий реквізит або через спеціальний тег всередині <Товар>:
<Товар>
<Ід>товар-guid</Ід>
<Найменування>Приклад товару</Найменування>
<Штрихкод>4607025491117</Штрихкод>
</Товар>
Деякі версії модуля обміну Бітрікс читають цей тег і записують у властивість інфоблока CML2_BAR_CODE. Перевірте: якщо властивість CML2_BAR_CODE існує після першого імпорту — штрихкод передається стандартно.
Якщо ні — потрібен обробник події імпорту.
Кастомний обробник для множинних штрихкодів
Для передачі кількох штрихкодів (по одиницях виміру) стандартного тегу недостатньо. Використовуємо ДодатковіРеквізити:
<ДодатковіРеквізити>
<ЗначенняРеквізиту>
<Найменування>ШтрихкодШтука</Найменування>
<Значення>4607025491117</Значення>
</ЗначенняРеквізиту>
<ЗначенняРеквізиту>
<Найменування>ШтрихкодКоробка</Найменування>
<Значення>4607025491124</Значення>
</ЗначенняРеквізиту>
</ДодатковіРеквізити>
У Бітрікс створюємо властивості інфоблока BARCODE_UNIT та BARCODE_BOX з типом «Рядок». Обробник події OnIBlockCMLImport2ElementAdd заповнює ці властивості:
AddEventHandler('catalog', 'OnIBlockCMLImport2ElementAdd',
'fillBarcodeProperties');
function fillBarcodeProperties(&$arFields, &$arProps, $arXML) {
if (isset($arXML['BARCODE_UNIT'])) {
$arProps['BARCODE_UNIT'] = $arXML['BARCODE_UNIT'];
}
if (isset($arXML['BARCODE_BOX'])) {
$arProps['BARCODE_BOX'] = $arXML['BARCODE_BOX'];
}
}
Штрихкоди у торгових пропозицій (SKU)
Якщо штрихкод прив'язаний до характеристики (наприклад, різні EAN у червоної та синьої футболки), потрібно передавати його на рівні пропозиції, а не товару. У XML пропозиції:
<Пропозиція>
<Ід>товар-guid#характеристика-guid</Ід>
<Штрихкод>4607025491131</Штрихкод>
</Пропозиція>
В інфоблоці пропозицій Бітрікс створюємо властивість BARCODE і заповнюємо її аналогічним обробником, але вже для події OnIBlockCMLImport2OfferAdd.
Пошук за штрихкодом на сайті
Після заповнення властивості BARCODE пошук за штрихкодом реалізується через стандартний компонент пошуку Бітрікс або кастомно:
$result = CIBlockElement::GetList(
[],
[
'IBLOCK_ID' => CATALOG_IBLOCK_ID,
'PROPERTY_BARCODE' => $scannedCode,
],
false,
false,
['ID', 'NAME', 'DETAIL_PAGE_URL']
);
Для мобільного сайту — підключити бібліотеку для сканування штрихкоду через камеру (ZXing або QuaggaJS). Користувач сканує штрихкод упаковки — сайт миттєво відкриває картку товару.
Кейс: B2B-майданчик з EDI
Виробник продуктів харчування з EDI-інтеграцією: рітейлери вимагають EAN-13 на кожну позицію прайс-листа. Штрихкоди ведуться в 1С, але історично не вивантажувалися на B2B-портал.
Завдання: додати EAN-13 до кожної позиції в каталозі B2B-порталу, щоб рітейлери могли копіювати їх при завантаженні у свої системи.
Зробили одноразове вивантаження всіх штрихкодів з 1С (зовнішня обробка → CSV), завантажили в Бітрікс через скрипт масового оновлення властивості BARCODE. Час: 4 години на 12 тис. позицій.
Налаштували подальшу синхронізацію при обміні: нові товари приходять зі штрихкодом у ДодатковіРеквізити, обробник заповнює властивість. Зміна штрихкоду існуючої позиції — через той самий механізм.







