Как мы перехитрили 1С и Битрикс и подняли продажи в 1,3 раза? Секрет в обычных товарах — узнайте и примените сейчас.

Именно такое настроение создается у меня, когда красивые маркетинговые речи встречаются с суровой реальностью.
Именно такое настроение создается у меня, когда красивые маркетинговые речи встречаются с суровой реальностью.

Кейс: 12 000 товаров в 1С, а на сайте — только 1 000. Торговые предложения убивали поиск и фильтр. Мы переписали логику обмена, и заказы выросли в 1,3 раза.

Когда стандартные решения перестают работать

В e-commerce существует архитектурный шаблон: если вы продаёте товары с вариациями (размер, цвет, материал), логично использовать торговые предложения. В связке 1С и «1С-Битрикс» для этого есть готовые механизмы. На первый взгляд, это правильное и красивое решение. Но так ли оно эффективно на практике?

Мы столкнулись с кейсом, который заставил нас пересмотреть этот подход. Клиент — производитель с каталогом более 12 000 позиций в 1С. На сайте отображалось лишь около 1 000. Остальные позиции были «в учётке», но покупатели их не видели.

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

Мы отказались от торговых предложений, пересобрали логику обмена и получили рост заказов в 1,3 раза спустя месяц после индексации. Рассказываю по шагам, как это было.

Часть 1. Почему торговые предложения — это не панацея

Что такое SKU и зачем они нужны

Торговые предложения (SKU) — механизм группировки товаров с общими характеристиками. Например, модель кроссовок в пяти размерах и трёх цветах вместо 15 отдельных карточек получает одного родителя и 15 вариаций. Технически — элегантно. База не захламляется, структура стройная.

Но есть нюансы, о которых принято умалчивать.

Три системных проблемы торговых предложений

1. Поиск теряет товары

Компонент bitrix:catalog.search по умолчанию ищет только по родительским элементам. Покупатель вводит артикул конкретного размера — поиск выдаёт «ничего не найдено», хотя товар есть в базе.

Форумы разработчиков пестрят жалобами. Проблема массовая, и штатными средствами не решается. Можно переписать логику поиска или использовать сторонние модули, но это дополнительные затраты.

Представьте: покупатель ищет «кеды белые 42 размер». Поиск выдаёт просто «кеды». Дальше — клик на карточку, разворот списка размеров, поиск своего. Минимум три лишних действия. Каждое — потеря конверсии. Особенно в эпоху Wildberries и Ozon, где пользователь привык получать конкретный товар в один клик.

Даже если доработать поиск под торговые предложения, выдача часто остаётся неудобной и запутанной.

2. Фильтр работает непредсказуемо

«Умный фильтр» Битрикса — мощный инструмент. Но с торговыми предложениями он часто даёт сбои. Покупатель ставит фильтр «размер 42» и «цвет белый» — система показывает пустую страницу или все товары без учёта фильтра.

Причина: фильтр оперирует родительским элементом, а не торговыми предложениями. Чтобы он «видел» размеры и цвета, требуются сложные подзапросы с CIBlockElement::SubQuery.

И даже после доработок остаются артефакты. Например, при выборе «красного» цвета в выдаче появляется карточка товара, где на главном изображении — белый цвет. Пользователь дезориентирован.

3. Продажи падают

Покупатель приходит за конкретным товаром. Когда вместо чёткой карточки с ценой и размером он видит конструктор «выберите цвет, размер, материал» — это вызывает раздражение.

Для небольших и средних магазинов это критично. Покупатели привыкли видеть конкретные товары, сравнивать их, добавлять в корзину в один клик. Торговые предложения усложняют путь. Каждый лишний шаг — потерянная продажа.

Часть 2. История провала: как мы потеряли 12 000 товаров

Исходные данные

К нам в Брейнфорс пришел клиент — производитель расходных материалов для офисной техники. В 1С — более 12 000 единиц номенклатуры. Однотипные товары, различающиеся характеристиками: напряжение, мощность, совместимость с моделями принтеров.

На сайте отображалось около 1 000 позиций. Остальные существовали в учётной системе, но покупатели их не видели.

Почему стандартная выгрузка не сработала

Мы настроили обмен по стандартному сценарию: создали торговые предложения, выгрузили данные. Получили две проблемы:

  1. Многие товары не выгрузились. Списочные свойства (те самые характеристики для фильтра) 1С передавала в формате, который Битрикс не понимал. Система либо пропускала свойства, либо записывала только первое значение.
  2. Произошло искажение данных. Битрикс создавал не те товары, что были в 1С. Возникало склеивание или дублирование. Вместо 12 000 уникальных карточек — 1 000 некорректных.

Часть 3. Испытанные методы и их неэффективность

Мы перепробовали три стандартных подхода. Ни один не сработал.

Подход №1. Доработка 1С

Изменить обработку обмена на стороне 1С, чтобы передавать данные в нужном формате. Технически возможно через расширение CommerceML.

Отказались по трём причинам:

  • Дорого. Требует отдельного специалиста по 1С.
  • Долго. Каждая доработка — согласования, тестирование, риски.
  • Негибко. При обновлении конфигурации 1С всё придётся переделывать.

Подход №2. Подбор типов свойств в Битриксе

Перебирали типы свойств в инфоблоке: строки, списки, справочники. Ничего не работало. 1С упорно передавала данные в своём формате, Битрикс — не понимал.

Обнаружился баг ядра: для множественных списочных свойств импорт обрабатывает только первое значение из XML. Остальные отбрасываются.

Подход №3. Перехват событий обновления

Пытались «дописать» свойства через OnAfterIBlockElementUpdate и OnAfterIBlockElementAdd.

Не сработало. При импорте через 1c_exchange.php многие события либо не вызываются, либо срабатывают до полной записи данных.

Часть 4. Решение: работа с XML-файлом напрямую

Когда стандартные методы провалились, мы пошли в обход.

1С выгружает данные в XML. Битрикс принимает и обрабатывает. Есть момент, когда XML уже на сервере, но ещё не обработан. Идеальная точка для вмешательства.

В дебрях документации мы нашли событие, вызываемое при получении XML-файла из обмена. Оно гарантированно срабатывает и даёт доступ к исходным данным.

Алгоритм:

  1. Получаем путь к XML-файлу из параметров события.
  2. Парсим структуру, извлекаем узлы с характеристиками.
  3. Строим массивы данных, проводим необходимые преобразования.
  4. Записываем данные напрямую в инфоблок через CIBlockElement::SetPropertyValues, остальные данные распределяем по нужным нам справочникам.

Технический нюанс: мы создали массив связок, по определённому значению свойства объединяли товары и обновляли служебное свойство, не участвующее в обмене. Работаем только с import.xml — в offers и rests не лезем.

Почему это эффективно:

  • Версионная независимость. Код не требует переписывания при обновлениях Битрикса или 1С.
  • Экономия бюджета. Не нужно дорабатывать 1С.
  • Универсальность. Обрабатывает любые типы свойств.
  • Прозрачность. Не ломает интерфейс и не создаёт лишних сущностей.

Часть 5. Результаты: цифры и бизнес-эффект

Измеримые итоги

  • Каталог вырос с 1 000 до 12 000 позиций. Все товары выгрузились без потерь и дублей.
  • Фильтрация заработала корректно. Любые характеристики — от простых до сложных.
  • Поиск перестал терять товары. Артикулы, названия, характеристики — всё индексируется.
  • Заказы выросли в 1,3 раза через месяц после индексации товаров поисковыми системами.

Экономика

Исходные данные: 50 заказов в день, средний чек — 3 000 руб. = 150 000 руб. выручки в день.

После внедрения: ~65 заказов в день = ~195 000 руб.

Прирост: ~45 000 руб. в день = ~1,35 млн руб. в месяц = ~16,2 млн руб. в год.

Затраты на доработку — разовые. Окупаемость решения — 1–2 недели.

Дополнительный эффект

Менеджеры перестали тратить часы на ручную правку каталога. Освобождённое время ушло на продажи. Это ещё один фактор роста.

Часть 6. Инсайты: почему нестандартные решения часто работают лучше

Когда стандарт — враг бизнеса

Торговые предложения — правильное архитектурное решение. Но далеко не для всех сценариев.

Если у вас:

  • небольшой ассортимент с простыми характеристиками;
  • или, наоборот, огромный однотипный каталог;
  • и покупатели привыкли видеть конкретные товары, а не конструкторы,

то стандартный подход может навредить.

Главный урок

Когда мы начинали, мы тоже пытались сделать «как правильно». Потратили недели, перебирали свойства, ловили события. Ничего не работало.

Только когда мы отбросили документацию и посмотрели на проблему с точки зрения бизнеса («нам нужно, чтобы все товары были на сайте, и покупатели их находили»), мы нашли решение.

Документация — это хорошо. Но бизнес-цели клиента важнее архитектурной красоты.

Заключение: как повторить успех

Если у вас похожая ситуация:

  • большой каталог в 1С;
  • проблемы с фильтрацией и поиском;
  • потеря ассортимента при выгрузке;
  • ручные правки каталога,

то наш опыт — готовая дорожная карта.

Мы не чиним 1С и не ломаем Битрикс. Мы находим точку, где данные ещё не испорчены, и обрабатываем их так, как нужно бизнесу.

P.S. В статье опущены технические детали реализации, поскольку они не являются определяющими для бизнес-решения. Если вам интересен технический разбор — мы готовы провести отдельную консультацию.

Было полезно? Напишите в комментариях, сталкивались ли вы с похожей проблемой. Подпишитесь, чтобы не пропустить новые кейсы и лайфхаки по автоматизации e-commerce. Ну и можете подписаться на мой Телеграм канал, а можете и не подписываться, не обижусь! Честно :)