Настройка мэппинга полей при парсинге для 1С-Битрикс

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

Настройка мэппинга полей при парсинге для 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 рабочих дней. Инвестиция, которая окупается при работе с тремя и более источниками.