Налаштування мепінгу полів при парсингу для 1С-Бітрікс

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

Парсер витяг дані — тепер потрібно з'ясувати, в яке поле Бітрікса потрапляє кожен атрибут джерела. Це і є мепінг. Хардкод мепінгу в PHP-коді — погане рішення: при зміні структури джерела або додаванні нового поля потрібно правити код і розгортати. Правильний мепінг — конфігурований, зберігається в базі та редагується через адміністративний інтерфейс.

Що таке мепінг і що в ньому зберігається

Мепінг — таблиця відповідностей між атрибутами джерела та полями/властивостями Бітрікса:

Поле джерела Тип поля Бітрікса Код у Бітріксі Трансформація
product_name Поле елемента NAME trim
sku Поле елемента XML_ID as-is
price Тип ціни 1 (роздрібна) float, round 2
quantity Поле каталогу CATALOG_QUANTITY int
color Властивість (список) COLOR lookup enum
weight_g Властивість (число) WEIGHT / 1000 (г→кг)
description_html Поле елемента DETAIL_TEXT HTMLPurifier
category_id Розділ IBLOCK_SECTION_ID section_map

Схема зберігання мепінгу

Highload-блок ParserFieldMapping з полями:

UF_PARSER_ID — ID парсера/джерела (зв'язок з таблицею парсерів)
UF_SOURCE_FIELD — назва поля в джерелі (рядок)
UF_TARGET_TYPE — тип цілі: field|property|price|stock|section
UF_TARGET_CODE — код поля або властивості в Бітріксі
UF_TRANSFORM — трансформація (JSON: {"type": "divide", "by": 1000})
UF_ACTIVE — активний
UF_SORT — порядок застосування

Альтернатива — JSON-конфіг у файлі або таблиця в PostgreSQL, якщо використовуєте нативну БД.

Типи трансформацій

Базові:

  • as-is — без змін
  • trim — прибрати пробіли
  • int / float — привести тип
  • boolean — «в наявності», «так», «1» → true

Математичні:

  • multiply / divide — конвертація одиниць
  • add_markup — помножити на коефіцієнт націнки

Текстові:

  • strip_html — прибрати теги
  • purify_html — HTMLPurifier з дозволеними тегами
  • transliterate — для генерації CODE

Мепінг значень (lookup):

  • enum_map — таблиця відповідностей «значення джерела → ID enum Бітрікса»
  • section_map — таблиця відповідностей «ID категорії джерела → ID розділу Бітрікса»

Адміністративний інтерфейс

UI мепінгу в адміністративній частині — ключовий елемент, без якого все інше втрачає сенс. Мінімальний набір:

  • Список полів джерела (автовизначається при тестовому запуску парсера)
  • Дропдаун для вибору поля Бітрікса
  • Форма для налаштування трансформації
  • Кнопка «Тест» — проганяє один тестовий об'єкт через мепінг і показує результат

Застосування мепінгу в коді

class FieldMapper {
    public function map(array $sourceData, int $parserId): array {
        $mappings = $this->getMappings($parserId); // з БД
        $result = ['fields' => [], 'properties' => [], 'price' => null, 'stock' => null];

        foreach ($mappings as $mapping) {
            $rawValue = $sourceData[$mapping['source_field']] ?? null;
            if ($rawValue === null) continue;

            $value = $this->transform($rawValue, $mapping['transform']);

            match($mapping['target_type']) {
                'field'    => $result['fields'][$mapping['target_code']] = $value,
                'property' => $result['properties'][$mapping['target_code']] = $value,
                'price'    => $result['price'][$mapping['target_code']] = $value,
                'stock'    => $result['stock'] = $value,
                'section'  => $result['fields']['IBLOCK_SECTION_ID'] = $this->mapSection($value),
            };
        }
        return $result;
    }
}

Таймлайн робіт

Етап Термін
Проєктування схеми зберігання мепінгу 4–6 годин
Розробка шару трансформацій 4–8 годин
Адміністративний інтерфейс редагування 1–2 дні
Інтеграція з наявними парсерами 4–8 годин

Разом: 3–5 робочих днів. Інвестиція, яка окупається при роботі з трьома та більше джерелами.