Настройка массовой привязки торговых предложений 1С-Битрикс

Тысячи торговых предложений висят без привязки к товару — после массового импорта из 1С или миграции с другой платформы. В результате в карточке товара пусто, цены и остатки не передаются, корзина не работает. Восстановить привязку вручную для 10 000 SKU — неделя рутины. Мы решаем эту задачу с помощ
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка массовой привязки торговых предложений 1С-Битрикс
Простой
~1 день

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • 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
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1164

Тысячи торговых предложений висят без привязки к товару — после массового импорта из 1С или миграции с другой платформы. В результате в карточке товара пусто, цены и остатки не передаются, корзина не работает. Восстановить привязку вручную для 10 000 SKU — неделя рутины. Мы решаем эту задачу с помощью скриптов массовой привязки по XML_ID, артикулу или внешней таблице. Экономия до 70% времени по сравнению с ручным трудом. Опыт более 10 лет и 500+ успешных проектов позволяют гарантировать корректную работу каталога. Получите консультацию — проведём бесплатный анализ базы данных и предложим оптимальное решение.

Кейс: магазин одежды с 15 000 SKU После миграции с OpenCart на Битрикс все предложения отвязались. Мы за 2 часа написали скрипт, сопоставивший артикулы по XML_ID, и восстановили привязку. Каталог заработал в течение дня.

Почему важно правильно привязывать торговые предложения?

Без корректной привязки через свойство CML2_LINK Битрикс не может собрать единый торговый каталог. Предложения не отображаются в карточке товара, цены и остатки не передаются в корзину, а фильтр по фасетам выдаёт пустые результаты. Особенно критично для интернет-магазинов с большим ассортиментом — ошибка привязки ведёт к потере конверсии и росту возвратов. Стоимость такой ошибки может достигать десятков тысяч долларов потерянной выручки за день.

Как массово восстановить привязку торговых предложений?

Шаг 1. Анализ структуры данных

Определяем инфоблоки товаров (catalogIblockId) и предложений (offersIblockId). Проверяем свойство CML2_LINK в b_iblock_property.

SELECT COUNT(*) FROM b_iblock_element ie WHERE ie.IBLOCK_ID = {offers_iblock_id} AND NOT EXISTS ( SELECT 1 FROM b_iblock_element_property iep INNER JOIN b_iblock_property ip ON ip.ID = iep.IBLOCK_PROPERTY_ID WHERE iep.IBLOCK_ELEMENT_ID = ie.ID AND ip.CODE = 'CML2_LINK' AND iep.VALUE IS NOT NULL ); 

Шаг 2. Массовая привязка по XML_ID

Самый распространённый сценарий — товары и предложения имеют артикул из 1С в поле XML_ID. Мы создаём карту соответствия и устанавливаем CML2_LINK пакетами по 200 записей. Это в 20 раз быстрее ручной привязки.

$offersIblockId = 11; $propRes = \Bitrix\Iblock\PropertyTable::getList([ 'filter' => ['IBLOCK_ID' => $offersIblockId, 'CODE' => 'CML2_LINK'], 'select' => ['ID'], ])->fetch(); $linkPropertyId = $propRes['ID']; $catalogIblockId = 10; $productMap = []; $productsRes = \CIBlockElement::GetList([], ['IBLOCK_ID' => $catalogIblockId], false, false, ['ID', 'XML_ID']); while ($row = $productsRes->Fetch()) { $productMap[$row['XML_ID']] = $row['ID']; } $offersRes = \CIBlockElement::GetList([], ['IBLOCK_ID' => $offersIblockId], false, false, ['ID', 'XML_ID']); $batch = []; while ($row = $offersRes->Fetch()) { $parentXmlId = substr($row['XML_ID'], 0, 8); if (!isset($productMap[$parentXmlId])) continue; $parentId = $productMap[$parentXmlId]; $batch[] = ['offer_id' => $row['ID'], 'parent_id' => $parentId]; if (count($batch) >= 200) { bindOffersToProducts($batch, $offersIblockId, $linkPropertyId); $batch = []; } } if (!empty($batch)) { bindOffersToProducts($batch, $offersIblockId, $linkPropertyId); } function bindOffersToProducts(array $batch, int $iblockId, int $propId): void { foreach ($batch as $item) { $existing = \Bitrix\Iblock\ElementPropertyTable::getList([ 'filter' => ['IBLOCK_ELEMENT_ID' => $item['offer_id'], 'IBLOCK_PROPERTY_ID' => $propId], 'select' => ['ID'], ])->fetch(); if ($existing) { \Bitrix\Iblock\ElementPropertyTable::update($existing['ID'], ['VALUE' => $item['parent_id']]); } else { \Bitrix\Iblock\ElementPropertyTable::add([ 'IBLOCK_ELEMENT_ID' => $item['offer_id'], 'IBLOCK_PROPERTY_ID' => $propId, 'VALUE' => $item['parent_id'] ]); } } } 

Шаг 3. Привязка через CSV-маппинг

Если логика определения родителя сложнее (например, по цвету и размеру), используем внешнюю таблицу. Пример файла:

offer_xml_id,parent_xml_id SKU-001-RED,PROD-001 SKU-001-BLUE,PROD-001 

Скрипт загружает маппинг, находит ID элементов по XML_ID и устанавливает CML2_LINK. Производительность — до 10 000 привязок в минуту.

Как проверить корректность привязки?

После выполнения привязки обязательно:

  1. Выборочно проверьте карточки товаров на публичной части — предложения должны отображаться.
  2. Сбросьте тегированный кэш инфоблоков.
  3. Переиндексируйте фасетный фильтр, если предложения участвуют в фильтрации.
\Bitrix\Iblock\InformationBlock::cleanTagCache($catalogIblockId); \Bitrix\Iblock\InformationBlock::cleanTagCache($offersIblockId); \Bitrix\Iblock\PropertyIndex\Manager::markIblockToReindex($offersIblockId); 

Сравнение ручной и автоматической привязки

Параметр Ручная привязка Автоматическая привязка
Время на 10 000 SKU ~1 неделя 2–4 часа
Риск ошибки Высокий (человеческий фактор) Минимальный (алгоритмический контроль)
Масштабируемость Низкая Высокая (пакетная обработка)
Экономия Высокая стоимость часа работы Снижение затрат в десятки раз

Что входит в услугу

  • Документация по текущей структуре привязки.
  • Тестовый скрипт на копии базы (staging).
  • Запуск массовой привязки на боевой базе.
  • Отчёт о результатах: сколько предложений привязано, сколько пропущено.
  • Консультация по дальнейшей интеграции с CommerceML для предотвращения повторных сбоев.

Типичные ошибки при привязке

  • Отсутствие уникального ключа — когда XML_ID дублируются или пусты.
  • Разные шаблоны генерации артикулов — приходится писать кастомные парсеры.
  • Игнорирование кэширования — после привязки обязательно сбрасывать кэш инфоблоков.
  • Неполная переиндексация — фасетный фильтр показывает старые данные.

Сроки и стоимость

Объём предложений Ориентировочное время
До 1 000 2–4 часа
1 000 – 20 000 1 день
20 000+ 2–3 дня (с отладкой маппинга)

Стоимость рассчитывается индивидуально. Получите консультацию — оценим проект бесплатно. Закажите восстановление каталога — и ваши товары снова будут в продаже.

Почему выбирают нашу команду

Наш опыт в восстановлении больших каталогов исчисляется сотнями успешных проектов. Мы работаем с магазинами, где количество торговых предложений превышает 100 000 единиц. Каждый проект индивидуален, и мы учитываем специфику хранения данных в вашей базе. Использование пакетной обработки и оптимизированных SQL-запросов позволяет нам работать с нагруженными базами данных без риска блокировок. После завершения работы предоставляем подробный отчёт о результатах и рекомендации по профилактике подобных проблем в будущем. Наши специалисты прошли официальное обучение по архитектуре 1С-Битрикс и имеют сертификаты разработчиков, что гарантирует высокое качество выполнения работы во всех случаях.

Наш подход к решению

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

Гарантии и поддержка

Мы даём гарантию на выполненную работу сроком на 12 месяцев. В течение этого периода исправляем любые возникающие проблемы бесплатно. После завершения проекта предоставляем полную документацию и обучение для вашей команды. Техническая поддержка доступна в течение 30 дней после запуска — мы поможем устранить любые вопросы.