Настройка выгрузки штрихкодов из 1С в 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка выгрузки штрихкодов из 1С в 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка выгрузки штрихкодов из 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 тыс. позиций.

Настроили последующую синхронизацию при обмене: новые товары приходят со штрихкодом в ДополнительныеРеквизиты, обработчик заполняет свойство. Изменение штрихкода существующей позиции — через тот же механизм.