Налаштування вивантаження додаткових реквізитів з 1С до 1С-Бітріксу

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування вивантаження додаткових реквізитів з 1С до 1С-Бітріксу
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування вивантаження додаткових реквізитів з 1С у 1С-Бітрікс

Додаткові реквізити номенклатури в 1С — це розширення картки товару: технічні характеристики, сертифікати, параметри застосування. На сайті вони стають фільтрами, табличними даними в картці, ключовими словами для пошуку. Налаштування їх коректної передачі та відображення займає значну частину робіт з інтеграції.

Типи додаткових реквізитів у 1С

У 1С:УТ 11 додаткові реквізити та відомості зберігаються в двох місцях:

Реквізити об'єкта (ДодатковіРеквізити) — зберігаються безпосередньо в елементі довідника. Вивантажуються при кожному обміні.

Відомості об'єкта (ДодатковіВідомості) — зберігаються в окремому регістрі відомостей, прив'язаному до об'єкта. Вивантажуються аналогічно, але потребують окремого увімкнення в налаштуваннях вузла.

Типи значень реквізитів:

  • Рядок, Число, Дата, Булево
  • Посилання на довідник (значення — GUID елемента)
  • Рядок з варіантами (перерахування)

Останній тип — посилальний — створює найбільші проблеми при обміні (докладніше нижче).

Як реквізити передаються в XML

Додаткові реквізити потрапляють у XML всередині <Товар>:

<ЗначенняРеквізитів>
  <ЗначенняРеквізиту>
    <Найменування>Потужність</Найменування>
    <Значення>2500</Значення>
  </ЗначенняРеквізиту>
  <ЗначенняРеквізиту>
    <Найменування>ОдиницяПотужності</Найменування>
    <Значення>Вт</Значення>
  </ЗначенняРеквізиту>
  <ЗначенняРеквізиту>
    <Найменування>ГарантійнийСтрок</Найменування>
    <Значення>24</Значення>
  </ЗначенняРеквізиту>
</ЗначенняРеквізитів>

Бітрікс при імпорті створює властивості інфоблока з такими ж найменуваннями і заповнює їх значеннями.

Автоматично створювані властивості: проблема кодів

При першому імпорті Бітрікс створює властивості інфоблока з кодами виду CML2_ATTR_001, CML2_ATTR_002. Це нечитабельні машинні коди, з якими незручно працювати в шаблонах.

Правильна практика: перед першим реальним імпортом пройти цикл тестових імпортів на копії, після чого вручну перейменувати коди властивостей у читабельні (POWER_WATT, WARRANTY_MONTHS). Після цього при наступних імпортах коди вже не зміняться (Бітрікс шукає властивість за збігом найменування, а не коду).

Або — написати обробник OnIBlockPropertyAdd, який при створенні властивості через обмін задає правильний код на основі найменування (транслітерація):

AddEventHandler('iblock', 'OnIBlockPropertyAdd',
    'setReadablePropertyCode');

function setReadablePropertyCode(&$arFields) {
    if (empty($arFields['CODE'])) {
        $arFields['CODE'] = CUtil::translit(
            $arFields['NAME'],
            'ru',
            ['change_case' => 'U', 'replace_space' => '_']
        );
    }
}

Посилальні реквізити: підміна GUID на значення

Якщо реквізит у 1С — посилання на довідник, у XML прийде GUID, а не текст:

<ЗначенняРеквізиту>
  <Найменування>Виробник</Найменування>
  <Значення>f3a2b1c0-1234-5678-abcd-ef0123456789</Значення>
</ЗначенняРеквізиту>

На сайті в картці товару буде показаний GUID замість «Bosch». Це потрібно виправити або:

  1. На стороні 1С: перед формуванням XML підміняти GUID на рядкове значення (найменування елемента довідника). Це правильніше — не потрібна додаткова логіка на стороні Бітрікс.

  2. На стороні Бітрікс: в обробнику імпорту зберігати таблицю маппінгу «GUID → значення» (формується з первинного обміну або окремого вивантаження довідників) і підставляти значення при записі властивості.

Множинні значення одного реквізиту

У 1С реквізит може мати кілька значень (якщо налаштований як «допускається кілька значень»). У XML вони передаються кількома тегами з однаковим найменуванням.

На стороні Бітрікс властивість має бути налаштована як «Множинне». Обробник імпорту має збирати всі значення в масив:

// При імпорті збираємо множинні значення
$multiValues = [];
foreach ($arXML['ADDITIONAL_REQUISITES'] as $req) {
    if ($req['NAME'] === 'Застосовність') {
        $multiValues[] = $req['VALUE'];
    }
}
$arProps['APPLICABILITY'] = $multiValues;

Кейс: промисловий каталог з 60+ атрибутами

Завод насосного обладнання: кожен виріб описується 60–80 технічними параметрами (робочий тиск, температурний діапазон, матеріал корпусу, клас захисту тощо). У 1С всі вони зберігаються як додаткові реквізити.

При першому імпорті в Бітрікс створилося 78 властивостей інфоблока з нечитабельними кодами. Витратили день на перейменування кодів та налаштування типів (числові — як «Число», з одиницями виміру; рядкові — як «Список» для фільтра).

Після налаштування: компонент розумного фільтра Бітрікс автоматично пропонує фільтрацію по всіх числових та списочних властивостях. Покупець фільтрує насоси за тиском, температурою та матеріалом — без додаткової розробки.

Інкрементальне оновлення атрибутів (при зміні значень у 1С) — 4 хвилини на весь каталог з 2300 позицій.